Linux shell编程学习笔记19:until循环语句

Linux shell编程中的until语句,在功能上与其它编程语言一致,但在结构与其它编程语言又不太一样。在大多数编程语言中,until语句的循环条件表达式一般位于循环体语句的后面,但是在Linux shell编程中,until语句的循环条件表达式与for语句和while一样,位于循环体语句的前面。

一、数字条件循环类

我们继续以for循环语句和while循环语句中的例子,计算 从1到10与2的乘积 并输出。 

(一)在zsh命令行成功执行

# csdn @ 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

# csdn @ edu in ~ [20:27:06] 

(二)在bash命令行成功执行

# csdn @ 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
[csdn ~]$ 

二、字符条件循环类

我们使用的实例跟前面探讨的while循环语句中的一样,先定义字符串s=abcd0,初始化循环变量i,然后从i开始截取字符串s值并输出,直到截取的字符串为0时结束循环。

(一)在bash中执行成功

[csdn ~]$ s=abcd0; i=0; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
abcd0
bcd0
cd0
d0
[csdn ~]$ 

(二)在zsh命令行执行不成功

# csdn @ 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命令行执行成功 

# csdn @ 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%                                                                                                                                                          

# csdn @ edu in ~ [22:49:49] C:130

 

2.在bash命令行执行成功 

[csdn ~]$ 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
[csdn ~]$ 

 

(二)用 ! : 作为循环条件表达式

1.在zsh命令行执行成功 

# csdn @ 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%                                                                                                                                                          

# csdn @ edu in ~ [22:55:55] C:130

2.在bash命令行执行成功 

[csdn ~]$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
^C
[csdn ~]$ 

四、总结

至此我们学习了Linux shell编程中的for、while、until三个循环语句,相对来说,for语句格式更灵活,比如支持 in 表达试,所以应用也相对更广泛。

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫郢剑侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值