Integer-Vergleich in der Bash mit if-else
Habe ich eine variable namens choice
. Nun, ich versuche zu verwenden, wenn vergleichen, um den eingegebenen Wert:
read $choice
if [ "$choice" == 2 ];then
#do something
elif [ "$choice" == 1 ];then
#do something else
else
echo "Invalid choice!!"
fi
Der Ausgang geht direkt auf ungültige Wahl, wenn ich geben Sie entweder 1 oder 2. Ich versuchte, setzen Sie Anführungszeichen um die 1 und 2 innerhalb der if-Anweisung. Funktioniert immer noch nicht. Mit -eq
gibt mir eine Fehlermeldung "Unärer operator erwartet".Was mache ich hier falsch?
InformationsquelleAutor rahuL | 2013-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
read
Zeile ist falsch. Ändern Sie es zu:also den Namen der Variablen, die Sie einstellen möchten, nicht Ihren Wert.
-eq
ist der richtige test, um zu vergleichen ganze zahlen. Sehenman test
für die Beschreibungen (oderman bash
).Eine alternative wäre die Verwendung von arithmetischen Auswertung statt (aber Sie müssen noch die richtige
read
- Anweisung):du meinst "seine" Wert; wenn "es" nicht sound Recht dann "es" ist nicht
Danke @Arthur, behoben.
Hmmm, kopieren und einfügen diese mit einer BusyBox sheel scheint zu scheitern. Wenn, zum Beispiel, geben Sie mir 2 zur Auswahl, ich bekomme den Fehler... -ash: 2: nicht gefunden -Asche: 2: nicht gefunden, Irgendwelche Ideen, was schief läuft?
Asche ist nicht bash. Versuchen devnull Fall Variante, ist es mehr tragbar.
InformationsquelleAutor Mat
Zu deinem Beispiel
case
zu sein scheint, was Sie wahrscheinlich wollen:InformationsquelleAutor devnull
Einer praktikablen Antwort, nur darauf hinweisen, dass seit
read
nimmt den Namen einer Variablen, kann der name angegeben werden, indem Sie eine andere variable.InformationsquelleAutor chepner