У меня есть такая команда:
#!/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 n
то же значение, что и для bash $n
, -v n="$n"
.
$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print 1.073741824*n; exit}')
$ echo $a
10.7374
Почему бы сделать это именно так, а не использовать переменные bash непосредственно внутри скрипта awk, заключенного в двойные кавычки?
Потому что это устраняет целый класс потенциальных проблем, которые могут вызвать проблемы либо в вашем скрипте bash, либо в вашем скрипте awk, либо в обоих.