Сообщение уведомления не отображается после выполнения сценария bash на Mac OS X

У меня есть Launchdaemon и скрипт, который удаляет приложение после загрузки его из App store.

Таким образом, приложение загружается и автоматически удаляется при загрузке. Уведомление конечного пользователя должно отображаться, но не отображается. Может кто-нибудь помочь?

Вот скрипт:

#!/bin/bash

Version=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)    

if [ $Version -ge 12 ]
then  
launchctl unload /Library/LaunchDaemons/net.sierra.plist
rm -f /Library/LaunchDaemons/net.sierra.plist
rm -f /usr/local/bin/sierra.sh
exit 0

else
rm -rf /Applications/Install macOS Sierra.app/
osascript -e 'tell app "System Events" to display dialog "macOS Sierra is not allowed on computers at this time."'
fi

Я бы добавил, что если я создаю тестовый каталог с именем
/ Приложения / Install macOS Sierra.app IT автоматически удаляет его, и вы получаете сообщение отображения.

спасибо

1 ответ

  1. Попробовать это:

        #!/bin/bash
        VERSION=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)
    
        if [[ "$VERSION" -ge '12' ]]
            then
                echo "TRUE LOGIC RUNNING"
                #launchctl unload /Library/LaunchDaemons/net.sierra.plist
                #rm -f /Library/LaunchDaemons/net.sierra.plist
                #rm -f /usr/local/bin/sierra.sh
            else
                echo "FALSE LOGIC RUNNING"
                #find '/Applications' -type 'f' -name 'Sierra.app' -exec rm -f '{}' \;         #osascript -e 'tell app "System Events" to display dialog "macOS Sierra is not allowed on computers at this time."'
        fi
    

    Вы можете раскомментировать код, как только увидите, какой раздел логики выполняется. Затем шаг через него и устранить неполадки шаг за шагом, чтобы увидеть, где ваши ошибки.

    Кроме того, вам не нужноexit 0, так как скрипт будет выходить с нулевым статусом кода автоматически. Если у вас есть коды состояния тестирования логики, вы обычно хотите поместить exit 1так, чтобы какой-то другой запущенный процесс мог передать это в свою логику.