我的脚本fetch_remote_work.sh
很慢,因为它连接到网络。我需要运行它很多次,直到它工作。
./fetch_remote_work.sh
while [ $? -ne 0 ]
do
./fetch_remote_work.sh
done
这显然运作良好。但是,我不喜欢有义务打电话给 first ./fetch_remote_work.sh
。我知道在其他语言(例如php)中,有一个do while循环至少运行第一次迭代。如果它存在于bash中,那将是非常干净的
所以我的问题是:有没有比我做的更清洁的方法?
使用命令本身作为
while
构造的条件。while ! ./fetch_remote_work.sh; do :; done
如果你想运行某个东西直到它的返回码为零,
(或作为单线)
对于您的示例:
这个循环“什么都不做”(执行
:
内置函数),直到fetch_remote_work.sh 脚本返回 0。将第一行更改为
false
,强制第一次迭代的理想条件。