変数を含む浮動小数点数のエラー

変数を含む浮動小数点数のエラー

次のようなコマンドがあります:

#!/bin/bash

echo how many GİBs
read n
echo $n GİBs = $a GBs

a=$(awk "BEGIN {print 1.073741824*$n; exit}")

しかし、次のような出力が得られます。

how many GİBs
12
12 GİBs = GBs

これをどうすれば解決できますか?

答え1

awkを使用し-vて設定するawk変数。たとえば、awk の をnbash の と同じ値に設定するには、を使用します$n-v n="$n"

$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print  1.073741824*n; exit}')
$ echo $a
10.7374

二重引用符で囲まれた awk スクリプト内で直接 bash 変数を使用するのではなく、なぜこのようにするのでしょうか?

これは、bash スクリプトまたは awk スクリプトのいずれか、あるいはその両方で問題を引き起こす可能性のある一連の潜在的な問題をすべて排除するためです。

関連情報