bash
外部コマンドを使用せずに整数演算を実行できることを読みました。たとえば、次のようになります。
echo "$((3 * (2 + 1)))"
外部コマンドを使用せずに浮動小数点演算を実行できますかbash
?
ベストアンサー1
いいえ。
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
Piped toawk
とaを使って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