Linux shell编程中的until语句,在功能上与其它编程语言一致,但在结构与其它编程语言又不太一样。在大多数编程语言中,until语句的循环条件表达式一般位于循环体语句的后面,但是在Linux shell编程中,until语句的循环条件表达式与for语句和while一样,位于循环体语句的前面。
一、数字条件循环类
我们继续以for循环语句和while循环语句中的例子,计算 从1到10与2的乘积 并输出。
(一)在zsh命令行成功执行
# cs @ edu in ~ [20:26:26]
$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20# cs @ edu in ~ [20:27:06]
$
(二)在bash命令行成功执行
# cs @ edu in ~ [20:27:06]
$ exec bash
[csdn ~]$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20
[cs ~]$
二、字符条件循环类
我们使用的实例跟前面探讨的while循环语句中的一样,先定义字符串s=abcd0,初始化循环变量i,然后从i开始截取字符串s值并输出,直到截取的字符串为0时结束循环。
(一)在bash中执行成功
[cs ~]$ s=abcd0; i=0; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
abcd0
bcd0
cd0
d0
[cs ~]$
(二)在zsh命令行执行不成功
# cs @ edu in ~ [22:36:44]
$ s=abcd0; i=1; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
zsh: unrecognized modifier `i'
与while循环语句一样,这个实例也在zsh命令行同样执行不成功。
三、无限循环
与for语句、while语句一样, until语句也可以实现无限循环。
下面的实例跟前面探讨的while循环语句中的一样,我们用无限循环每隔30秒显示提示信息 press Ctrl+C to exit,在用户按下Ctrl+C后结束循环。
(一)用false作为循环条件表达式
1.在zsh命令行执行成功
# cs @ edu in ~ [22:48:08]
$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C%# cs @ edu in ~ [22:49:49] C:130
$
2.在bash命令行执行成功
[cs ~]$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C
[cs ~]$
(二)用 ! : 作为循环条件表达式
1.在zsh命令行执行成功
# cs @ edu in ~ [22:49:49] C:130
$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C%# cs @ edu in ~ [22:55:55] C:130
$
2.在bash命令行执行成功
[cs ~]$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
^C [cs~]$
四、总结
至此我们学习了Linux shell编程中的for、while、until三个循环语句,相对来说,for语句格式更灵活,比如支持 in 表达试,所以应用也相对更广泛。