Bitte erklären Sie mir, warum die allerletzte "echo" Anweisung leer ist? Ich gehe davon aus, dass es in der while-Schleife auf einen Wert von 1 erhöht wurde:Bash variabler Bereich
#!/bin/bash
OUTPUT="name1 ip ip status" # normally output of another command with multi line output
if [ -z "$OUTPUT" ]
then
echo "Status WARN: No messages from SMcli"
exit $STATE_WARNING
else
echo "$OUTPUT"|while read NAME IP1 IP2 STATUS
do
if [ "$STATUS" != "Optimal" ]
then
echo "CRIT: $NAME - $STATUS"
echo $((++XCODE))
else
echo "OK: $NAME - $STATUS"
fi
done
fi
echo $XCODE
Ich habe versucht, die folgende Anweisung anstelle der ++ XCODE Methode
XCODE=`expr $XCODE + 1`
und es zu pflegen drucken außerhalb der while-Anweisung. Ich denke, ich verpasse hier etwas über den variablen Bereich, aber die alte man-Seite zeigt es mir nicht.
Wo initialisierst du XCODE zu etwas, das inkrementiert werden kann? –
Ich habe versucht, ein "XCODE = 0" an der Spitze des Codes, außerhalb der while-Anweisung –
zu werfen. Ohne die cruft, funktioniert es für mich. #!/Bin/bash für i in 1 2 3 4 5; tun echo $ ((++ XCODE)) getan echo "fin:" $ XCODE Ich denke, Ihr Problem hat nichts mit variabler Scoping und alles zu tun, was während der Weile passiert. –