下面的脚本可以完美地与 or 一起使用,bash
但不能与sudo bash
or一起使用sh
。按下enter
或^C
将不起作用。只有^\
and^Z
工作,但不是 with sudo bash
。
printf '#!/bin/sh\nread var\n' > myscript
chmod +x myscript
sh -c "timeout -k 1 10 ./myscript"
# it does work when `bash` is used instead of `sh`
我知道我可以使用read -t 10
. (这在我无论如何都停止使用时不可用sh
并且仅在我停止使用时才有效timeout
。)但我使用的原因timeout
与read
. 我需要它(其他东西)myscript
。我不需要解决方法,但需要对bash
/sudo bash
事物的解释,并希望为timeout
and提供解决方案read
。
我还不知道为什么会这样,但这与不同的 shell 如何执行和处理信号有关。显然,看起来这是一些解决方案:
与以下相同
sudo bash
:man timeout
有没有这样解释:我不确定这一切意味着什么,也不知道后果是什么,但也许这对你有帮助,或者其他人会解释。