while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。
unti 循环和 while 循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环,until 的使用场景很少,一般使用 while 即可。
Shell while 循环的用法如下:
while循环的用法 | until循环的用法 | 说明 |
while condition do statements done
- 在 while 循环体中必须有相应的语句使得 condition 越来越趋近于“不成立”,只有这样才能最终退出循环
|
until condition do statements done
- 在 until 循环体中必须有相应的语句使得 condition 越来越趋近于“成立”,只有这样才能最终退出循环
|
condition 表示判断条件,statements 表示要执行的语句(可以只有一条,也可以有多条)
- while中的条件满足时进行循环,until中的条件不满足时进行循环
|
举栗 | 脚本 | 结果 |
计算从 m 加到 n 的值 |
while脚本 | until脚本 |
- #!/bin/bash
- read -p 'input first value: ' m
- read -p 'input second value: ' n
- if [[ -z $m || -z $n ]]
- then echo 'the input should not be empty'
- fi
- sum=0
- while ((m<=n))
- do
- ((sum+=m))
- ((m++))
- done
- echo 'the sum is: '$sum
|
#!/bin/bash
- read -p 'input first value: ' m
- read -p 'input second value: ' n
- if [[ -z $m || -z $n ]]
- then echo 'the input should not be empty'
- fi
- sum=0
- until ((m>n))
- do
- ((sum+=m))
- ((m++))
- done
- echo 'the sum is: '$sum
|
|
- input first value: 1
- input second value: 100
- the sum is: 5050
- input first value: 7
- input second value: 3
- the sum is: 0
- input first value: 5
- input second value: r #r被当做0使用
- the sum is: 0
- input first value: r #r被当做0使用
- input second value: 2
- the sum is: 3
while的判断条件与until的判断条件恰好相反。。
|
实现一个简单的加法计算器,用户每行输入一个数字,计算所有数字的和 |
- sum=0
- echo "请输入您要计算的数字,按 Ctrl+D 组合键结束读取"
- while read n
- do
- ((sum += n))
- done
- echo "The sum is: $sum"
|
运行结果:
12↙ 33↙ 454↙ 6767↙ 1↙ 2↙ The sum is: 7269
在终端中读取数据,可以等价为在文件中读取数据,按下 Ctrl+D 组合键表示读取到文件流的末尾,此时 read 就会读取失败,得到一个非 0 值的退出状态,从而导致判断条件不成立,结束循环。
|