在bash中是否有do
-while
循环?
我知道如何在bash中编写while
循环:
while [[ condition ]]; do
body
done
是否有类似的结构,用于do
-while
循环,在这种结构中,body
会至少执行一次,而不管while
条件如何?
在bash中是否有do
-while
循环?
我知道如何在bash中编写while
循环:
while [[ condition ]]; do
body
done
是否有类似的结构,用于do
-while
循环,在这种结构中,body
会至少执行一次,而不管while
条件如何?
while
循环非常灵活,也可以作为do-while
循环使用:
while
body
condition
do true; done
例如,要求输入并循环直到它为整数,您可以使用:
while
echo "Enter number: "
read n
[[ -z $n || $n == *[^0-9]* ]]
do true; done
这比普通的do-while
循环更好,因为你可以有一些只在第一次迭代之后执行的命令:用echo "Please enter a valid number"
替换true
。
set -e
在任何一行发生错误时终止脚本的话,使用这个形式将不会对body
部分中的行起作用!因此最好使用@Barmar答案中的形式。请注意不要改变原意。 - Ben XOset -e
,而是自己进行错误检测。 - lmat - Reinstate Monica在bash
中没有do-while
运算符。您可以使用以下方法模拟:
while true; do
body
[[ condition ]] || break
done
set -e
,而被接受的答案的方式似乎没有。 - Ben XO你可能只想尝试这个,我认为在bash中没有这样的东西。
doStuff(){
// first "iteration" here
}
doStuff
while [condition]; do
doStuff
done