Установка переменной Bash с помощью osascript всегда неверна.

Установка переменной Bash с помощью osascript всегда неверна.

Я пытаюсь задать переменную на основе ввода пользователя. Я знаю, что то, что я настроил для запроса пользователю, ответит либо "button returns:yes", либо "button returns:no".

Я бы хотел, чтобы переменная устанавливалась в значение «True», если кнопка возвращает «да», и «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.

решение1

Добавьте эту строку в конец копии вашего скрипта:

echo "r: '$response'; v: '$var'; b: '$reboot'"

дает такой вывод:

r: 'button returned:yes'; v: 'button returned:yes '; b: 'False'

Похоже, что это osascriptдобавляет пробел к выходным данным, и поскольку "string"не равно "string ", ваш тест не работает так, как вы ожидаете.

Связанный контент