2016-10-03 101 views
0

我有一个Launch Daemon和脚本,可以从应用程序商店下载应用程序后删除应用程序。在Mac OS X上运行bash脚本后不显示通知消息

因此,应用程序下载并自动删除下载。应该显示给最终用户的通知消息,但不会。谁能帮忙?

下面是脚本:

#!/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 

我想补充一点,如果我创建一个名为
/应用/安装\ MACOS \ Sierra.app它自动删除它,你会得到的消息显示一个测试目录。

感谢

+0

你确定路径和名称?对于Yosemite,它是“Applications/Installer \ OS \ X \ Yosemite”,对于El Capitain,它是“Applications/Installer \ OS \ X \ El \ Capitain”。除此之外,我认为这可能是后台进程。您是否尝试使用“告诉应用程序”Finder“”。您应该添加的最后一个细节:使用图标0按钮{“OK”}默认按钮“OK”(它会为您提供仅有1个按钮而不是取消/确定的停止图标 – pbell

+0

我会使用find命令来搜索“ Sierra.app“,不管它的路径是什么,如果它存在,并且版本号是所需的数字,那么将其删除,让我知道你是否需要语法帮助 – misteralexander

+0

@pbell - 是的路径和名称是正确的。也尝试过“finder”同样的问题。 – sql1

回答

0

试试这个:

#!/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这样一些其他正在运行的进程可以将它提供给它的逻辑。

+0

我用你的脚本,并没有.app删除或消息出现。我不确定你在哪里可以看到哪个“逻辑部分正在运行”的意思? – sql1

+0

是的,你应该看到一条消息(在终端中),它表示“TRUE LOGIC RUNNING“或”FALSE LOGIC RUNNING“,你好如果你的“版本”大于或等于'12',你会得到真正的信息,如果你的版本低于12,你会看到错误信息。由于这些是“回声”陈述,你只能看到它们在终端中,而不是在GUI弹出窗口或其他东西。 – misteralexander

+0

此外,我发现[此链接](https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sw_vers.1.html),说明您可以运行“sw_vers -productVersion “直接而不是一个尾巴,并削减以获得版本号。只是想减少所需的步骤。 – misteralexander