stdinから受け取った数字を合計するためにbcを使用することはできません。

stdinから受け取った数字を合計するためにbcを使用することはできません。

以下を使用して、フォルダーに含まれるファイルの平均エントロピーを計算します。

{ echo '('; find . -type f -exec entropy {} \; | \
  grep -Eo '[0-9.]+$' | \
  sed -r 's/$/+/g'; echo '0)/'; 
  find . -type f | wc -l; }  | \
tr -d '\n' | bc -l

entropyファイルのShannonエントロピーを計算して、次の形式の出力を提供する実行可能ファイル。

$ entropy foo
foo: 5.13232

上記のコマンドでエラーが発生しました。

(standard_in) 1: syntax error

しかし、生成された出力は問題ないようです。

$ { echo '('; find . -type f -exec entropy {} \; | \
    grep -Eo '[0-9.]+$' | \
    sed -r 's/$/+/g'; echo '0)/'; \
    find . -type f | wc -l; }  | \
  tr -d '\n'
(5.13232+2.479+1.4311+0)/3

これはまた働きます:

$ echo '(2.1+2.1)/2' | bc -l
2.1

上記のコマンドにはどのような問題がありますか?

ベストアンサー1

これはまた働きます:echo '(2.1+2.1)/2' | bc -l

ああ、でも試してみました:

echo '(2.1+2.1)/2' | tr -d '\n' | bc -l
(standard_in) 1: syntax error

使用するとecho -n同じことができます。つまり、問題である改行文字を終了する必要はありません。

おすすめ記事