Я пытаюсь установить переменную на основе ввода данных пользователем. Я знаю, что то, что я настроил для запроса пользователя, будет либо отвечать «кнопка вернулась: да», либо «кнопка вернулась: нет».
Я бы хотел, чтобы для переменной было установлено значение «Истина», если кнопка возвращает «Да». и "False", если кнопка возвращает "нет".
Вот что у меня есть на данный момент:
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"
Что я делаю не так? Переменная $ reboot всегда имеет значение false, независимо от ввода пользователя. Это сценарий bash, предназначенный для запуска в системе macOS.
Добавление этой строки в конец копии вашего скрипта:
echo "r: '$response'; v: '$var'; b: '$reboot'"
дает этот вывод:
r: 'button returned:yes'; v: 'button returned:yes '; b: 'False'
Кажется, что osascript
добавляет пробел к выходным данным, и, поскольку "string"
не равно "string "
, ваш тест не работает так, как вы ожидаете.