Bash-Scripting und bc
Ich versuche zu schreiben, ein bash-Skript, und ich brauchte einige floating-point-math. Im Grunde möchte ich etwas wie das hier tun:
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
Das problem, das ich in $ ist? tendenziell halten die Ausgabe des echo-Programms und nicht dem bc-Aufruf. Gibt es eine Möglichkeit, die ich speichern Sie die Ausgabe aus dem bc-Programm in eine variable?
EDIT:
Danke für die schnellen Antworten. Hier ist eine andere Sichtweise auf das problem. Sagen, dass ich geändert, das Skript ein bisschen, damit es wie folgt aussieht:
#!/bin/bash
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
exit
fi
echo "$NUM"
Wenn der Benutzer Eingänge einer normalen floating-point-Wert, es funktioniert:
bash script.sh 1.0
Ausgabe:
.1000000000000000000000000
Jedoch, wenn der Benutzer einen falschen Wert, wird das Skript nicht mehr erholen kann:
bash script.sh 1.0a
Ausgabe:
(standard_in) 1: parse error
Was ich versuche zu tun ist, Holen Sie es würdevoll beenden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht sehen, nichts falsch. $NUM ist angeblich zu halten Ihre
bc
Befehl Ergebnissefinden Sie unter:
Ausgabe
andere Möglichkeit ist die Verwendung von awk
Andere Möglichkeit ist das prüfen von "$1", bevor Sie an
bc
. zBbrauchen Sie nicht zu überprüfen, die für
$?
ausbc
mehrbc
. siehe mein edit.Für GNU
bc
, kann eine Fehlermeldung ähnlich "(standard_in) 1: syntax error" Ausgabe auf stderr. Sie können erfassen diese in eine variable und prüfen Sie es.Sind Sie nach dem Ergebnis der Berechnung von bc (die Sie speichern in NUM) oder den status der Rückkehr aus der system call?
Als ich sagte, Sie haben das Ergebnis der Berechnung in
$NUM
:Test: