我有一个这样的命令:
#!/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 脚本或两者都出现问题的潜在问题。