我试图编写一个在后台空闲等待信号的 shell 脚本。由于脚本不接受用户输入,我想read
在等待时无限期地阻止脚本。
在 bash 中,以下代码似乎按预期工作,每次收到 SIGUSR1 时都会输出“信号”:
#!/bin/bash
trap "echo signal" SIGUSR1
read
$ ./test
signal
signal
...
但是,如果我使用#!/bin/sh
ash 或 BusyBox ash 运行,发送 SIGUSR1 也会导致程序终止:
#!/bin/sh
trap "echo signal" SIGUSR1
read
$ ./test
signal
$
不应该read
只在从标准输入读取 EOF 或 IFS 后返回吗?在这种情况下并没有发生,那么是什么导致它返回呢?