在bash中有do-while循环吗?

时间:2014-06-25 23:42:32

标签: bash

bash中是否有do - while循环?

我知道如何在bash中编写while循环:

while [[ condition ]]; do
    body
done

是否存在类似的构造,但对于do - while循环,body至少执行一次而不考虑while条件?

3 个答案:

答案 0 :(得分:5)

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循环更好,因为您可以拥有仅在第一次迭代后执行的命令:将true替换为echo "Please enter a valid number"

答案 1 :(得分:1)

不,do-while中没有bash运算符。您可以使用以下方式模拟它:

while true; do
    body
    [[ condition ]] || break
done

答案 2 :(得分:1)

你可能只想尝试这个,我不相信在bash中有这样的事情。

doStuff(){
//first "iteration" here
}
doStuff
while [condition] do
doStuff
done