Applescript возвращает «Команда завершена с ненулевым статусом» в сценарии do shell - PullRequest
2 голосов
/ 02 июля 2011

Я работаю с Applescript, который пытаюсь создать, после того, как он выполняет команду, чтобы проверить результаты команды, но когда я ее выполняю, он выдает сообщение (в редакторе AppleScript); Expected expression but found “error”..

Как сделать откат и проверить, совпадает ли команда с The command exited with a non-zero status., чтобы я мог сделать что-то еще, если оно совпадает с сообщением об ошибке?

do shell script "echo \"stats\" | nc localhost 11211" password "~password~" with administrator privileges

if error = "The command exited with a non-zero status." then
    display dialog "Returned zero"
else if result = "The command exited with a non-zero status." then
    display dialog "Returned zero"
else if result = "" then
    do shell script "memcached -d -l 127.0.0.1 -p 11211 -m 64"
    display dialog "Memcached Started"
else
    do shell script "killall memcached" with administrator privileges
    display dialog "Memcached Stopped"
end if

РЕДАКТИРОВАТЬ: Обновленная версия

set error to do shell script "echo \"stats\" | nc localhost 11211" password "~password~" with administrator privileges

if error = "The command exited with a non-zero status." then
    do shell script "memcached -d -l 127.0.0.1 -p 11211 -m 64"
    display dialog "Memcached Started"
else
    do shell script "killall memcached" with administrator privileges
    display dialog "Memcached Stopped"
end if

1 Ответ

3 голосов
/ 02 июля 2011

Ваша конкретная проблема заключается в использовании слова «ошибка» в качестве переменной.Ошибка - это специальное слово для appleScript, поэтому ее нельзя использовать в качестве переменной.

Однако, даже если вы исправите эту проблему, ваш код все равно не будет работать должным образом.Вы ловите сообщения об ошибках с помощью блока try.Обратите внимание, что « theError » содержит сообщение об ошибке ...

try
    do shell script "echo \"stats\" | nc localhost 11211" password "~password~" with administrator privileges
on error theError
    if theError is "The command exited with a non-zero status." then
        do shell script "memcached -d -l 127.0.0.1 -p 11211 -m 64"
        display dialog "Memcached Started"
    else
        do shell script "killall memcached" with administrator privileges
        display dialog "Memcached Stopped"
    end if
end try
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...