linux bash/zsh:杀死父进程并抑制输出

uplii1fm  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(147)

我是一个新的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
xpcnnkqh

xpcnnkqh1#

正如评论中提到的,杀死父母不是最好的办法。
你可以做这样的事情

#! /bin/bash
# parent

...
check_dependencies || exit
...

没必要杀了它。假设check_dependencies以非零值退出(您可以为不同的条件指定不同的返回值)。

相关问题