Ich habe einen Befehl wie diesen:
#!/bin/bash
echo how many GİBs
read n
echo $n GİBs = $a GBs
a=$(awk "BEGIN {print 1.073741824*$n; exit}")
Es wird jedoch eine Ausgabe wie diese ausgegeben:
how many GİBs
12
12 GİBs = GBs
Wie kann ich das lösen?
Antwort1
Verwenden Sie awk's -v
zum Setzen einesawkVariable. zB um awk n
auf den gleichen Wert wie bashs $n
, zu setzen -v n="$n"
.
$ n=10
$ a=$(awk -v n="$n" 'BEGIN{ print 1.073741824*n; exit}')
$ echo $a
10.7374
Warum sollte man es auf diese Weise machen und nicht Bash-Variablen direkt in einem in Anführungszeichen gesetzten Awk-Skript verwenden?
Weil es eine ganze Klasse potenzieller Probleme eliminiert, die entweder in Ihrem Bash-Skript ODER Ihrem Awk-Skript ODER in beiden Probleme verursachen können.