这可能是一个奇怪的问题,但有没有办法为Bash中的命令设置最短执行时间?例如:
command1
command2
command3
在一种这样的情况下,我需要在command1
和command3
之间经过至少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秒后完成。