在编写 shell 脚本时,我经常需要等待给定的条件变为真,例如远程 URL 变得可用(使用curl 检查)或应该存在的文件等。
理想情况下,我希望有一个函数或脚本,await以便我可以编写,例如,
await [[ some condition ]]
Run Code Online (Sandbox Code Playgroud)
它会每秒检查一次条件,直到条件变为真或发生超时。理想情况下,我可以设置轮询间隔和超时。
有这样的工具吗?
tha*_*guy 15
您可以使用until循环:
until some condition
do
sleep 5
done
Run Code Online (Sandbox Code Playgroud)
例如
until nc -z localhost 22
do
echo "SSHd is not up yet. Waiting..."
sleep 5
done
Run Code Online (Sandbox Code Playgroud)
如果要添加超时,则必须使用计数器或使用内部SECONDS变量单独添加:
SECONDS=0
until nc -z localhost 22
do
if (( SECONDS > 60 ))
then
echo "Giving up..."
exit 1
fi
echo "SSHd is not up yet. Waiting..."
sleep 5
done
Run Code Online (Sandbox Code Playgroud)