Das Festlegen von Bash-Variablen mit Osascript ist immer falsch.

Das Festlegen von Bash-Variablen mit Osascript ist immer falsch.

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 osascriptan die Ausgabe ein Leerzeichen angehängt wird, und da "string"nicht gleich ist "string ", funktioniert Ihr Test nicht wie erwartet.

verwandte Informationen