Tengo un comando como este:
#!/bin/bash
echo how many GİBs
read n
echo $n GİBs = $a GBs
a=$(awk "BEGIN {print 1.073741824*$n; exit}")
Pero da un resultado como este:
how many GİBs
12
12 GİBs = GBs
Como puedo resolver esto ?
Respuesta1
Utilice awk -v
para establecer unawkvariable. por ejemplo , para establecer awk n
en el mismo valor que bash $n
,.-v n="$n"
$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print 1.073741824*n; exit}')
$ echo $a
10.7374
¿Por qué hacerlo de esta manera, en lugar de usar variables bash directamente dentro de un script awk entre comillas dobles?
Porque elimina una clase completa de problemas potenciales que pueden causar problemas en su script bash O en su script awk O en ambos.