
Ich versuche, eine Variable basierend auf der Benutzereingabe festzulegen. Ich weiß, dass die von mir konfigurierte Aufforderung an den Benutzer entweder mit „Schaltfläche zurückgegeben: ja“ oder „Schaltfläche zurückgegeben: nein“ antwortet.
Ich möchte, dass die Variable auf „True“ gesetzt wird, wenn die Schaltfläche „Ja“ zurückgibt, und auf „False“, wenn die Schaltfläche „Nein“ zurückgibt.
Das habe ich bisher:
response="button returned:yes"
var=`/usr/bin/osascript -e 'display dialog "Is a reboot required?" buttons {No,Yes}'`
/bin/test "$response" = "$var" && reboot="True" || reboot="False"
Was mache ich falsch? Die Variable $reboot wird immer auf „false“ gesetzt, unabhängig von der Benutzereingabe. Dies ist ein Bash-Skript, das auf einem macOS-System ausgeführt werden soll.
Antwort1
Fügen Sie diese Zeile am Ende einer Kopie Ihres Skripts hinzu:
echo "r: '$response'; v: '$var'; b: '$reboot'"
gibt diese Ausgabe aus:
r: 'button returned:yes'; v: 'button returned:yes '; b: 'False'
Es scheint, dass osascript
an die Ausgabe ein Leerzeichen angehängt wird, und da "string"
nicht gleich ist "string "
, funktioniert Ihr Test nicht wie erwartet.