我是一个新的bash,我试图做一个bash脚本自己,可以检查和安装指定的软件包,如果他们不在系统中。它应该在其他脚本中调用,如果依赖项没有被解决,它应该杀死父脚本,这样它就不会继续执行。这是一个小问题,但很烦人。我从zsh(主脚本和杀手脚本shebangs是#!/bin/bash),当我终止进程时,它输出
zsh: terminated parent
我是这样做的:
#!/bin/bash
kill_parent () {
ppid=$(ps -o ppid= $$)
kill $ppid
}
# other code
kill_parent
# more code
我在 bash 中找到了一些关于如何解决这个问题的文章,例如,其中一些文章实际上是同一个问题
还有一些想法,比如使用wait,disown,SIGINT(根本不会杀死进程),流重定向和其他东西。但对我来说,我已经尝试了所有这些,但输出仍然存在。我想,问题是输出消息的是zsh,因此,尝试在bash脚本中进行重定向没有帮助。
我也试过把shebang改成
#!/bin/zsh
但是在kill上以zsh输出运行它
kill_parent:kill:2: illegal pid: 242038
1条答案
按热度按时间xpcnnkqh1#
正如评论中提到的,杀死父母不是最好的办法。
你可以做这样的事情
没必要杀了它。假设
check_dependencies
以非零值退出(您可以为不同的条件指定不同的返回值)。