📅  最后修改于: 2023-12-03 15:29:35.877000             🧑  作者: Mango
在编写 Shell 脚本时,有时需要等待某个操作完成后才能继续执行下面的操作。但是,某些操作可能不一定能够立即完成,需要等待一段时间。为了避免程序进入无限等待状态,我们可以在脚本中添加等待超时机制。
下面是一个等待命令成功的示例:
#!/bin/bash
while ! command; do
sleep 1
done
这个脚本会不断执行 command
命令,如果命令执行失败,则等待 1 秒钟,然后再次执行,直到命令成功为止。
如果要等待一段时间而不是一直等待直到命令成功,可以使用 sleep
命令。例如,下面的脚本等待 10 秒钟:
#!/bin/bash
sleep 10
echo "done"
如果我们想要等待某个操作完成,但是又不希望程序进入无限等待状态,可以使用超时机制。下面是一个等待命令成功或超时的示例:
#!/bin/bash
TIMEOUT=10 # 超时时间为 10 秒钟
INTERVAL=1 # 检查间隔为 1 秒钟
start=$(date +%s) # 记录开始时间
while true; do
if command; then
break # 如果命令成功,退出循环
fi
# 检查是否超时
now=$(date +%s)
elapsed=$(($now - $start))
if [[ $elapsed -ge $TIMEOUT ]]; then
echo "Timeout after ${TIMEOUT}s."
exit 1
fi
sleep $INTERVAL # 等待间隔
done
这个脚本会不断执行 command
命令,如果命令执行失败,则等待 1 秒钟,然后再次执行,直到命令成功或超时为止。如果超时,则脚本会输出错误信息并退出。
在编写 Shell 脚本时,等待命令成功或等待一段时间是非常常见的操作。通过加入超时机制,我们可以避免程序进入无限等待状态,增加脚本的健壮性。