bash
は、外部コマンドを使用せずに整数演算を実行できることを確認しました。次に例を示します。
echo "$((3 * (2 + 1)))"
bash
は、外部コマンドを使用せずに浮動小数点演算も実行できますか?
番号。
Bashは浮動小数点演算をネイティブに実行できません。
これはあなたが探しているものではありませんが、他の誰かを助けるかもしれません:
代替
bc
bc
は浮動小数点演算を可能にし、scale
値を設定することで整数を浮動小数点に変換することもできます。 (scale
値はbc
内の除算にのみ影響しますが、これの回避策は1で除算した数式を終了することです)
$ echo '10.1 / 1.1' | bc -l
9.18181818181818181818
$ echo '55 * 0.111111' | bc -l
6.111105
$ echo 'scale=4; 1 + 1' | bc -l
2
$ echo 'scale=4; 1 + 1 / 1' | bc -l
2.0000
awk
awk
はそれ自体がプログラミング言語ですが、bashスクリプトで浮動小数点演算を実行するために簡単に利用できますが、それだけではありません!
echo | awk '{print 10.1 / 1.1}'
9.18182
$ awk 'BEGIN{print 55 * 0.111111}'
6.11111
$ echo | awk '{print log(100)}'
4.60517
$ awk 'BEGIN{print sqrt(100)}'
10
echo
にパイプされたawk
とBEGIN
の両方を使用して、これを行う2つの方法を示しました。 awk
BEGIN
ステートメント内のすべては、入力が読み取られる前に実行されますが、入力またはBEGINステートメントがない場合、awk
は実行されないため、入力をフィードする必要があります。
Perl
Bashスクリプト内で利用できる別のプログラミング言語。
$ Perl -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(Perl -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105
Python
Bashスクリプト内で利用できる別のプログラミング言語。
$ python -c 'print 10.1 / 1.1'
9.18181818182
$ somevar="$(python -c 'print 55 * 0.111111')"; echo "$somevar"
6.111105
Ruby
Bashスクリプト内で利用できる別のプログラミング言語。
$ Ruby -l -e 'print 10.1 / 1.1'
9.18181818181818
$ somevar="$(Ruby -e 'print 55 * 0.111111')"; echo "$somevar"
6.111105
「bashは外部コマンドを使用せずに浮動小数点演算も実行できますか?」
いいえ。
robert@pip2:/tmp$ echo $((2.5 * 3))
bash: 2.5 * 3: syntax error: invalid arithmetic operator (error token is ".5 * 3")