なぜ
a2=100.
echo 1.1*$a2|bc
端末では機能しますが、次のスクリプトの3つのバリエーションは機能しません。
a2=100.
echo "
1.1*$a2|bc
$(1.1*$a2|bc)
$((1.1*$a2|bc))
">x.sh
答え1
echo
これは、パイプで接続したスクリプトコードにステートメントを入れなかったためですx.sh
。 2番目のバリアントには追加のecho
サブシェルコマンドが必要です$(...)
。 3番目の変形$((...))
は、算術拡張が浮動小数点数では機能しないため、効果がありません。
a2=100.
echo "
echo 1.1*$a2|bc;
echo $(echo 1.1*$a2|bc);
">x.sh
結果:
# sh x.sh
110.0
110.0