【发布时间】:2020-07-22 07:29:49
【问题描述】:
我想使用timeout 命令运行脚本,如果脚本运行没有问题或发生超时,则退出0。否则,如果脚本以一些 non-0 代码退出,我想保留它。
我想象的语法是 timeout 实现了类似 --exit 的东西,所以我可以写 timeout --exit 0 10s ping google.com。
我见过this other answer on SO,它说您可以使用or 条件处理timeout 的退出代码,例如timeout 10s ping google.com || [[ $? -eq 143 ]]。但这是对timeout 的结果进行硬编码,如果我的脚本失败并抛出143,它将默默地失败。我也不想强制 exit 0。如果脚本失败我想知道。
我正在寻找一个保留脚本中所有失败(和非失败)的答案,但始终从 timeout 退出 0。如果有一种不使用timeout 且认知复杂度较低的解决方法,我也会考虑这样做。
【问题讨论】:
-
关键是仔细阅读手册页,大部分时间它包含您要查找的信息 - man7.org/linux/man-pages/man1/timeout.1.html (reg. status 124)