带变量的浮点数错误

带变量的浮点数错误

我有一个这样的命令:

#!/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 脚本或两者都出现问题的潜在问题。

相关内容