Erro com números flutuantes com variáveis

Erro com números flutuantes com variáveis

Eu tenho um comando assim:

#!/bin/bash

echo how many GİBs
read n
echo $n GİBs = $a GBs

a=$(awk "BEGIN {print 1.073741824*$n; exit}")

Mas dá uma saída como esta:

how many GİBs
12
12 GİBs = GBs

Como posso resolver isso ?

Responder1

Use awk's -vpara definir umestranhovariável. por exemplo, para definir o awk ncom o mesmo valor do bash $n, -v n="$n".

$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print  1.073741824*n; exit}')
$ echo $a
10.7374

Por que fazer dessa maneira, em vez de usar variáveis ​​bash diretamente dentro de um script awk entre aspas duplas?

Porque elimina toda uma classe de problemas potenciais que podem causar problemas no script bash OU no script awk OU em ambos.

informação relacionada