设置命令的最短执行时间



这可能是一个奇怪的问题,但有没有办法为Bash中的命令设置最短执行时间?例如:

command1
command2
command3

在一种这样的情况下,我需要在command1command3之间经过至少3秒,但command2将花费未知(但有限(的时间。如果command2需要,比如说1秒,那么我希望在执行command3之前再延迟2秒。如果command2需要,比如说4秒,那么我不希望在command3之前有额外的延迟。

目前,我正在command3之前插入一个/bin/sleep 3命令,以保证至少3秒的延迟。这是可行的,但一个更清洁、更省时的解决方案将是非常棒的。

我很欣赏任何想法;我不是Bash的职业选手,所以我担心我可能会错过一些基本的东西,或者要求一些过于复杂的东西。谢谢

这里有一个简单的方法:

command1
sleep 3 &   # Start a 3s sleep in the background
command2
wait        # Wait for the background sleep to finish (if it hasn't already)
command3

如果command2的时间超过三秒,则睡眠已经退出,wait将立即返回。

如果command2的时间少于3秒,则wait将等待睡眠退出,这将在启动后总共3秒后完成。

最新更新