【发布时间】:2017-05-16 02:17:58
【问题描述】:
我在尝试执行陷阱睡眠循环时遇到了一个奇怪的(可能是特定于平台的问题)。
具体如下代码:
saysomething() {
trap saysomething 37
echo "Hello there"
while true; do
sleep 1
done
}
echo "Current pid: $$"
saysomething
每次我在 Ubuntu 14.04 上使用 kill -37 <pid> 从另一个 shell 发送信号时都会打印“Hello there”。
但是,在 RHEL 7 机器上,上述内容仅在第一次时打印 Hello there。之后,脚本继续执行,但无法响应更多信号。
造成这种差异的原因可能是什么?
【问题讨论】:
-
对不起!读得太快了。那么,也许您可以从函数外部执行此操作。
-
您是否在两台机器上使用相同版本的
bash? -
没有。看起来
bash版本不同。 Ubuntu 上的 4.3.11 和 RHEL 7 上的 4.2.46。这会导致如此明显的行为差异吗?