サーバーにバックアップスクリプトがあり、バックアップのcronジョブを実行し、新しいバックアップファイルのサイズなど、バックアップされたファイルの概要を送信します。スクリプトの一部として、ファイルの最終サイズを(1024 ^ 3)で割って、バイト単位のファイルサイズからGB単位のファイルサイズを取得したいと思います。
bashには浮動小数点計算がないため、結果を得るためにbcへのパイプを使用しようとしていますが、基本的な例に困惑しています。
円周率の値を一定の尺度で取得しようとしましたが、
次のように機能しますが:
~ #bc -l
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4/3
1.33333333333333333333
22/7
3.14285714285714285714
q
0
quit
非インタラクティブバージョンは機能しません:
#echo $(( 22/7 )) | bc
3
これは機能します:
#echo '22/7' | bc -l
3.14285714285714285714
しかし、私は変数を使用する必要があります。したがって、以下が機能しないことは役に立ちません。
#a=22 ; b=7
#echo $(( a/b )) | bc -l
3
私は明らかにBashで変数を使用するための構文に何かが欠けており、私が誤解していることについていくつかの「ポインター」で使用することができます。
DigitalRossが言ったように、私は以下を使うことができます:
#echo $a / $b | bc -l
3.14285714285714285714
ただし、次のような複雑な式は使用できません。
#echo $a / (( $b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('
#echo $a / (( b-34 )) | bc -l
-bash: syntax error near unexpected token `('
複雑な算術表現で浮動小数点の結果を取得するための正しい構文を誰かに教えてもらえますか?