加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

macos – 双击shell脚本问题(Mac上的.COMMAND)

发布时间:2020-12-15 22:18:32 所属栏目:安全 来源:网络整理
导读:尝试通过双击在Mac上运行以下test.command脚本. (要求:必须双击运行) #!/bin/shsudo java -jar ExecutableJar.jar 这是输出. (终端保持打开状态,显示以下信息) Last login: Mon Aug 13 15:59:05 on ttys001/Applications/Application Folder/test.command
尝试通过双击在Mac上运行以下test.command脚本. (要求:必须双击运行)

#!/bin/sh
sudo java -jar ExecutableJar.jar

这是输出. (终端保持打开状态,显示以下信息)

Last login: Mon Aug 13 15:59:05 on ttys001
/Applications/Application Folder/test.command ; exit;
code-mac:~ code$/Applications/Application Folder/test.command ; exit;
Unable to access jarfile ExecutableJar.jar
logout

[Process completed]

当我从终端运行相同的命令时……

sudo java -jar ExecutableJar.jar

…它工作正常并按预期打开可执行jar(提示输入密码后).有任何想法吗?另外,如果可能的话,我希望脚本要么根本不打开终端,要么在启动可执行jar之后至少关闭终端.

谢谢!

解决方法

将以下内容添加到脚本的开头,使其在双击时按预期工作.

cd "$(dirname "$0")"

整个test.command脚本如下:

#!/bin/sh
cd "$(dirname "$0")"
sudo java -jar ExecutableJar.jar &

添加&在sudo命令的末尾使得可执行jar作为后台进程运行,并允许在我的情况下处理sudo之后的其他命令以关闭终端窗口. (否则它保持打开状态)

最后,在脚本结尾添加以下任一项将在完成后关闭它.第一种方法关闭所有终端窗口并且有点矫枉过正,但它完成了工作.

killall Terminal

第二个将提示用户关闭终端窗口,为用户提供选择.

osascript -e 'tell application "Terminal" to quit'

最后一个重要的注意事项是,关闭技术都不适合我的情况.由于我的脚本需要sudo并提示用户输入密码,因此在用户有机会输入密码之前,使用任一路径都会提示用户关闭终端(osascript)或关闭终端(killall).要先获取密码然后再运行可执行jar,请使用:

sudo -v

如果需要,提示输入密码,然后在后台运行可执行jar.并使用killall或osascript.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读