次のようなコマンドがあります:
#!/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 の をn
bash の と同じ値に設定するには、を使用します$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 スクリプトのいずれか、あるいはその両方で問題を引き起こす可能性のある一連の潜在的な問題をすべて排除するためです。