Ошибка с плавающими числами с переменными

Ошибка с плавающими числами с переменными

У меня есть такая команда:

#!/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, либо в обоих.

Связанный контент