Ich versuche zu verstehen, warum eine nicht gesetzte Variable als 0 ausgewertet wird. in einigen Skripts im Schreiben wird die Variable nur bei Bedarf gesetzt und einige Zeit nicht . so wird diese Art von Verhalten mit falscher Ausgabe führen. bedeutet es, ich muss alle meine Variablen voreinstellen oder mindestens hinzufügen, dass sie gesetzt sind?Warum eine unset-Variable als 0 ausgewertet wird in bash if-Anweisung
#!/bin/bash
#myvalue=0 #comment to simulate an unset variable.
if [[ $myvalue -eq 0 ]] ; then
echo "OK"
fi
Ergebnis mit OK:
bash -x test.sh
+ [[ '' -eq 0 ]]
+ echo OK
OK
versuche 'if [$ myvalue -eq 0]; dann ' –
ich kann -eq mit [] nur [[]] benutzen und ich benutze es, weil ich eine Zahl auswerten muss. –
Natürlich können Sie '-eq' mit' ['; tatsächlich ist es fraglich, ob Sie jemals '[[... -eq ...]]' 'verwenden sollten, da Sie stattdessen das viel besser lesbare' ((... == ...)) '' verwenden können. – chepner