Shell脚本编程之(六)循环
while do done, until do done ( 不定循环)
一般来说,不定循环最常见的就是底下这两种状态了:
while [ condition ] <==中括号内的状态就是判断式
do <==do 是循环的开始!
程序段落
done <==done 是循环的结束
while 的中文是『当…时』,所以,这种方式说的是『当 condition 条件成立时,就进行循环,直到condition 的条件不成立才停止』的意思。还有另外一种不定循环的方式:
until [ condition ] ]
do
程序段落
done
这种方式恰恰与 while 相反,它说的是『当 condition 条件成立时,就终止循环, 否则就持续进行循环的程序段。』是否刚好相反啊~我们以 while 来做个简单的练习好了。 假设我要让使用者输入yes 或者是 YES 才结束程序的执行,否则就一直进行告知用户输入字符串
[dmtsai@study bin]$ vim yes_to_stop.sh
#!/bin/bash
# Program:
# Repeat question until user input correct answer.
# History:
# 2018/12/23 Rivers First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while [ "${yn}" != "yes" -a "${yn}" != "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer."
上面这个例题的说明是『当 ${yn} 这个变数不是 “yes” 且 ${yn} 也不是 “YES” 时,才进行循环内的程序。』 而如果 ${yn} 是 “yes” 或 “YES” 时,就会离开循环啰~那如果使用 until 呢?呵呵有趣啰~ 他的条件会变成这样:
[root@node01 bin]$ vim yes_to_stop-2.sh
#!/bin/bash
# Program:
# Repeat question until user input correct answer.
# History:
# 2018/12/23 Rivers First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
until [ "${yn}" == "yes" -o "${yn}" == "YES" ]
do
read -p "Please input yes/YES to stop this program: " yn
done
echo "OK! you input the correct answer."
for…do…done ( 固定循环)
相对于 while, until 的循环方式是必须要『符合某个条件』的状态, for 这种语法,则是『 已经知道要进行几次循环』的状态!他的语法是:
for var in con1 con2 con3 ...
do
程序段
done
以上面的例子来说,这个 $var 的变量内容在循环工作时:
- 第一次循环时, $var 的内容为 con1 ;
- 第二次循环时, $var 的内容为 con2 ;
- 第三次循环时, $var 的内容为 con3 ;
- …
for…do…done 的数值处理
除了上述的方法之外,for 循环还有另外一种写法!语法如下:
for (( 初始值; 限制值; 执行步阶 ))
do
程序段
done
这种语法适合于数值方式的运算当中,在 for 后面的括号内的三串内容意义为:
- 初始值:某个变量在循环当中的起始值,直接以类似 i=1 设定好;
- 限制值:当变量的值在这个限制值的范围内,就继续进行循环。例如 i<=100;
- 执行步阶:每作一次循环时,变量的变化量。例如 i=i+1。
值得注意的是,在『执行步阶』的设定上,如果每次增加 1 ,则可以使用类似『i++』的方式,亦即是 i 每次循环都会增加一的意思。好,我们以这种方式来进行 1 累加到使用者输入的循环吧!
[root@node01 bin]$ vim cal_1_100- - 2.sh
#!/bin/bash
# Program:
# Try do calculate 1+2+....+${your_input}
# History:
# 2018/12/23 Rivers First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input a number, I will count for 1+2+...+your_input: " nu
s=0
for (( i=1; i<=${nu}; i=i+1 ))
do
s=$((${s}+${i}))
done
echo "The result of '1+2+3+...+${nu}' is ==> ${s}"
Shell脚本编程之(六)循环相关推荐
- shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf
shell脚本编程(完结版) Shell 脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦 如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦东山群共同讨论 1 Shell ...
- shell脚本编程学习笔记8(XDL)——流程控制和循环
shell脚本编程学习笔记8--流程控制和循环 1,if语句 1,框架 1,单分支:if [条件判断式] ;thenprogramfiif [条件判断式]thenprogramfi注意:if语句使用f ...
- shell脚本编程-循环(for循环
shell脚本编程-循环(for循环) 知识回顾: 创建一个shell脚本规则 执行脚本 变量 测试 运算 if :单分支.双分支.多分支 实例: 剪刀石头布 检测主机是否存活 判断成绩 循环: fo ...
- 《Linux命令行与shell脚本编程大全》(第三版)读书笔记
第一部分 Linux命令行 第三章.基本的bash shell命令 bash手册 man 命令 例子: man cat 空格翻页.回车下一行.左右键看右侧(左侧)内容.q退出 info info in ...
- 《Linux命令行与shell脚本编程大全》笔记一
第一章 初始 Linux shell Linux内核主要四种功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 shell:交互工具. 第三章 基本的bash shell ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
- Shell脚本编程-总
Shell脚本编程 一. SHELL入门 1.1 变量 1.1.1 变量名规范 1.1.2 位置变量 1.1.3 环境变量 1.2 管道 1.3 退出状态码 1.3.1 退出状态码描述 1.3.2 改 ...
- php shell脚本怎么写,Shell脚本编程入门
一.什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do tou ...
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 -------------------------------------------------------------------- 注:如果你对python感兴趣 ...
最新文章
- 华为某研究生程序员哀叹:年薪五十多万,存款一百万,却不知道未来怎么走!...
- proBuilder编辑的模型变黑
- java多线程--多线程基础小结
- JavaScript基础和js概括
- .NET 6新特性试用 | LINQ功能改进
- 清华提出LogME,无需微调就能衡量预训练模型的下游任务表现!
- CVE-2017-7529Nginx越界读取缓存漏洞POC
- 复数基础——虚数和复数_5
- OSPF 的单区域配置(以华为模拟器为例)
- 关于 HTTP 长连接
- 苏宁有货:为“轻创业”而来
- 阿里云DataV数据可视化 回调ID详解 API数据展示
- html两列合并一列,如何将excel中两列数据合并到一列呢
- 【javascript】解析psd文件踩坑
- 小熊派开发板STM32L431_BearPi_LiteOS_E53_ST1调测GPS+2G心得(附代码修正版)
- vue axios轮询更新echarts 页面崩溃问题
- 进制转换模板——短除法
- Ubuntu18.04安装carla0.9.9 UE4.24踩坑版
- HCIP-H12-221练习题
- 第十一周项目二----用二叉树求解代数表达式
热门文章
- [Linux] Linux常用网站
- php的zend引擎执行过程 一
- (原创)使用tensorflow及anaconda(spyder)时遇到的问题
- SQL Server job突然不工作了
- 从“连接”到“交互”—阿里巴巴智能对话交互实践及思考
- 我和EDAS这两年——阿里巴巴入职两年的小结
- 如何快速清理Mac系统上的大额文件
- retrofit2、RxJava简单使用总结
- tp5自定义一个函数php,tp5 如何模块自定义函数!
- Pytorch深度学习实战笔记