Bash 脚本 - 直到循环
Bash 具有三种类型的循环结构,即 for、while 和 until。直到循环用于迭代一个命令块,直到所需的条件为假。
句法:
until [ condition ];
do
block-of-statements
done
在这里,上述语法的流程将是 -
- 检查状况。
- 如果条件为假,则执行语句并返回步骤 1。
- 如果条件为真,则程序控制移至脚本中的下一个命令。
例子:
#!/bin/bash
echo "until loop"
i=10
until [ $i == 1 ]
do
echo "$i is not equal to 1";
i=$((i-1))
done
echo "i value is $i"
echo "loop terminated"
输出:
无限循环使用直到
在这个例子中,直到循环是无限的,即它无限地运行。如果条件设置为直到循环始终为假,则循环变为无限。
程序:
#!/bin/bash
## This is an infinite loop as the condition is set false.
condition=false
iteration_no=0
until $condition
do
echo "Iteration no : $iteration_no"
((iteration_no++))
sleep 1
done
输出:
直到循环中断并继续
此示例使用 break 和 continue 语句来改变循环的流程。
- break :此语句终止当前循环并将程序控制传递给以下命令。
- continue:此语句结束循环的当前迭代,跳过它下面的所有剩余命令并开始下一次迭代。
程序
#!/bin/bash
## In this program, the value of count is incremented continuously.
## If the value of count is equal to 25 then, the loop breaks
## If the value of count is a multiple of 5 then, the program
## control moves to the next iteration without executing
## the following commands.
count=1
# this is an infinite loop
until false
do
if [[ $count -eq 25 ]]
then
## terminates the loop.
break
elif [[ $count%5 -eq 0 ]]
then
## terminates the current iteration.
continue
fi
echo "$count"
((count++))
done
输出:
直到具有单一条件的循环
这是仅检查一个条件的 until 循环的示例。
程序
#!/bin/bash
# This program increments the value of
# i until it is not equal to 5
i=0
until [[ $i -eq 5 ]]
do
echo "$i"
((i++))
done
输出:
具有多个条件的直到循环
直到循环可以与多个条件一起使用。我们可以使用 and : '&&'运算符and or: '||'运算符使用多个条件。
程序
#!/bin/bash
## This program increments the value of
## n until the sum is less than 20
## or the value of n is less than 15
n=1
sum=0
until [[ $n -gt 15 || $sum -gt 20 ]]
do
sum=$(($sum + $n))
echo "n = $n & sum of first n = $sum"
((n++))
done
输出:
命令的退出状态:
我们知道 shell 中的每个命令都会返回一个退出状态。退出状态为 0 表示执行成功,而非零值表示执行失败。直到循环执行直到条件返回非零退出状态。