次のコマンドがあります。
#!/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 の値を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スクリプト、またはその両方で問題を引き起こす可能性のある問題の完全なクラスを削除するためです。