私は自分のサーバー上にバックアップのcronジョブを実行するバックアップスクリプトを用意しています。新しいバックアップファイルのサイズを含め、バックアップされたファイルの概要を送ってくれます。スクリプトの一環として、ファイルの最終サイズを(1024^3)で割り、ファイルサイズをGB単位でバイト単位で取得したいと考えています。浮動小数点の結果がBashの整数部になります
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
しかし、変数を使う必要があります。だから、それは次のように動作しないことを助けるdoesntの:
#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 `('
誰かが持つ浮動小数点の結果を得るために私に働いて正しい構文を与えることができます複雑な算術表現?
bashを教えることは可能です。浮動小数点結果を伴う整数除算:参照:http://stackoverflow.com/a/24431665/3776858 – Cyrus