Ich versuche, ein Shell-Skript in OS X-Terminal auszuführen. Das Programm wird beendet, wenn Sie ein m oder a eingeben.While-Schleife im OR-Zustand funktioniert nicht. BASH-Shell
Problem ist, ich kann nicht die OR-Anweisung arbeiten.
#!/bin/sh
read File
while [ "$File" != "m" ] || [ "$File" != "a" ]
do
read File
done
Wenn ich nur
tunwhile [ "$File" != "m" ]
Es funktioniert völlig in Ordnung. Ich habe mehrere Methoden ausprobiert, wie
Keiner von ihnen scheint zu arbeiten. Der obige Code, den ich nicht gepostet nicht Looping zu stoppen, wenn der Benutzer gibt einen "m" oder ein
Wahrscheinlich wollen Sie '' && statt '' ||. Die Bedingung, die Sie jetzt verwenden, wird immer als wahr ausgewertet, denn wenn eine der Alternativen falsch auswertet, wird die andere als wahr bewertet. Mit anderen Worten, deine Logik ist zweifelhaft. –
Dieses Konstrukt ist auch sehr seltsam. Es wäre viel sauberer, es so zu schreiben, während man Datei liest; tue wenn test "$ File" = m || "$ Datei" = a; dann breche; fi ... '. Ihre aktuelle Konstruktion überprüft nicht, ob "Lesen" fehlschlägt, so dass sie sich seltsam verhält, wenn der Eingabestream beendet wird. –
Bitte werfen Sie einen Blick auf: [Was soll ich tun, wenn jemand meine Frage beantwortet?] (Http://stackoverflow.com/help/someone-answers) – Cyrus