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 -v
para definir umestranhovariável. por exemplo, para definir o awk n
com 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.