Fehler bei Gleitkommazahlen mit Variablen

Fehler bei Gleitkommazahlen mit Variablen

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 -vzum Setzen einesawkVariable. zB um awk nauf 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.

verwandte Informationen