帶變數的浮點數錯誤

帶變數的浮點數錯誤

我有一個這樣的命令:

#!/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 腳本或兩者都出現問題的潛在問題。

相關內容