web-dev-qa-db-ja.com

bc:bash変数で「scale」を使用する

簡単に言うと、浮動小数点の後に2桁の値が必要なスクリプトを書いています。 bcを使用しようとしています。「スケール」の使用方法がわかりません。

A=12 ; bc <<< $(($A/5))

それは正しいですが、「スケール」を追加するとエラーが発生します。

A=12 ; bc <<< 'scale=2;$(($A/5))'

(standard_in) 1: illegal character: $
(standard_in) 1: illegal character: $
3
watchmansky

一重引用符を二重に置き換えます。単一引用符を使用すると、数式の$Aは展開されず、文字どおり$Aではなく12と見なされます。

A=12 ; bc <<< "scale=2;$(($A/5))"
2

また、変数$(())の内部では、$Aとして指定する必要はありません。Aで指定するだけです。

A=12 ; bc <<< "scale=2;$((A/5))"
2

次に、$(())を実行するときにサブシェルを呼び出します。これは、bcが何も実行しないため、実行したいことではありません。これを試して

A=12 ; bc <<< "scale=2; $A/5"
2.40
5
Hrvoje Špoljar

試してみてください:

A=12;echo 'scale=2;'"$A / 5"|bc -l
1
Pol Hallen