我有一個這樣的命令:
#!/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 的值設定為與 bash 的,n
相同的值。$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 腳本或兩者都出現問題的潛在問題。