Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何处理正在超时运行的脚本的非超时异常?_Bash_Timeout - Fatal编程技术网

Bash 如何处理正在超时运行的脚本的非超时异常?

Bash 如何处理正在超时运行的脚本的非超时异常?,bash,timeout,Bash,Timeout,我正在运行一个命令。如果出现故障,将执行| |之后的部分。它也将在超时的情况下执行 $ timeout 5 script.sh || { echo "Would execute if timeout or script failure"; } 如何分别处理超时错误和脚本错误 $ timeout 5 script.sh ??? { echo "Timeout is fine, but this is printed only if script.sh returns an error"; }

我正在运行一个命令。如果出现故障,将执行
| |
之后的部分。它也将在超时的情况下执行

$ timeout 5 script.sh || { echo "Would execute if timeout or script failure"; }
如何分别处理超时错误和脚本错误

$ timeout 5 script.sh ??? { echo "Timeout is fine, but this is printed only if script.sh returns an error"; }

奥古斯是对的。您需要检查超时命令的退出代码。如果您可以查看script.sh以确保它不会返回退出代码124,那么您可以帮助降低Oguz识别的风险

所以,我相信代码应该是这样的:

$ timeout 5 script.sh || [ $? -eq 124 ] || { echo "Timeout is fine, but this is printed only if script.sh returns an error"; }

超时时,
timeout
命令的退出状态为124;您可以使用它来区分错误的类型,但这并不是真正可靠的,因为如果脚本本身返回124,则无法判断差异