bash:从程序执行返回但在退出脚本

时间:2017-04-03 20:47:05

标签: bash return exit

我想在我的Mac上执行一个bash脚本,它将启动命令行程序caffeinate。但如果我这样开始:

#!/bin/bash
caffeinate

它不会返回,终端将被阻止。那不是我想要的。但另一方面,如果我关闭终端,程序也应该退出。我怎样才能做到这一点?

我已尝试使用returnexit,但无法获得我想要的内容。

2 个答案:

答案 0 :(得分:1)

尝试类似:

#!/bin/bash
trap 'kill -TERM $caffeinate_pid' EXIT
caffeinate &
caffeinate_pid=$!

此脚本需要获取(使用source.),以便陷阱位于调用shell的上下文中(您要使用此终止触发终止咖啡因) )。

答案 1 :(得分:0)

这是由Terminal.app引起的,其中现有的解决方法是go into Terminal's preferences并设置"当shell退出时:"到"关闭窗口",并设置"关闭前询问:"到"从不"或者"只有在登录shell之外还有其他进程并且:"并将您的程序添加到关闭窗口时不提示用户的程序列表中。(不确定第二部分是否适用于脚本,也不确定是否有更通用的解决方法使用更多bash和AppleScript代码以便最终用户无需更改任何偏好。)