下面是一个示例代码,其中shell脚本在后台启动一些作业,并在收到CHLD信号(即子进程终止)时将采取一些操作......问题是如果父shell脚本是ZSH一,它工作正常并且捕获CHLD信号,但是其他shell 不!那是为什么?
#! /bin/zsh -
function foo() { echo "Trapped CHLD signal!"
}
trap 'foo' CHLD
./child-work1.sh &
./child-work2.sh &
./child-work3.sh &
echo 'waiting for the children'
wait
echo '--------- done ---------'
答案 0 :(得分:6)
Bash在交互时自动启用作业控制,但在脚本中必须明确打开它。
set -m