bash делать, пока с диалоговым окном applescript. L oop продолжает выскакивать тот же диалог, если ответ не вводится в течение минуты - PullRequest
0 голосов
/ 18 июня 2020

У меня есть сценарий, который предлагает пользователю ввести данные, используя сценарий Apple для его имени в моем сценарии bash. Кажется, он отлично работает, но если они не отвечают на приглашение примерно через 1 минуту, он снова запрашивает, потому что у меня есть al oop. Каждый раз, когда он запрашивает, другое окно появляется поверх другого. Так что мне либо нужно убить диалог, и я не могу этого понять, либо мой l oop не пытается каждую минуту, и я тоже не уверен, как это сделать. Вот как выглядит мой скрипт.

PromptDisplayName ()
{
DISPLAYNAME=$(/usr/bin/osascript << EOF
tell application "System Events" activate set DISPLAYNAME to display dialog "Enter Full Name: " default answer "John Doe" with icon note buttons {"OK"} default button 1 with title "Enter Full Name" return text returned of DISPLAYNAME as string
end tell
EOF
)

Loop until Displayname is in the correct format
until [[ "$DISPLAYNAME" =~ ([a-zA-Z]){3,}[[:blank:]]([a-zA-Z]+){3,} ]]
do
PromptDisplayName
done

}

1 Ответ

0 голосов
/ 18 июня 2020

Если бы кто-нибудь ответил мне на этот вопрос на другом форуме, но это то, что я сделал, чтобы исправить это.

bash l oop был на 2-минутном таймере, поэтому я просто добавил это конец моей строки applescript, сдаюсь после 119. См. строку ниже.

tell application "System Events" activate set DISPLAYNAME to display dialog "Enter Full Name: " default answer "John Doe" giving up after 119

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...