shell编程--流程控制for,do-while,if-then,break,continue,case等
2.5 流程控制
2.5.1 if语法
1、语法格式
if condition
then
statements
[elif condition
then statements. ..]
[else
statements ]
fi
2、示例
#!/bin/bash read -p "please input your name:" NAME ###read命令用于从控制台读取输入数据 printf '%s\n' $NAME if [ $NAME = root ] ##注意if和后面的[]有间距 then echo "hello ${NAME},welcome!" elif [ $NAME = toto ] then echo "hello ${NAME},welcome!" else echo "SB,get out here!" fi |
脚本内容截图:
3、判断条件
1/ 条件判断基本语法
[ condition ] ()
- command1
- command2
- ...
- commandN
- ;;
- esac
case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常量。匹配发现取值符合某一模式后,其间所有命令开始执行直至;;。
取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令不再继续其他模式。如果无一匹配模式,使用星号*捕获该值,再执行后面的命令。
下面的脚本提示输入1到4,与每一种模式进行匹配:
case.sh案例如下:
#!/bin/bash echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1 ' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4之间的数字' ;; esac |
运行结果:
[root@hadoop test]# sh case.sh 输入 1 到 4 之间的数字: 你输入的数字为: 4 你选择了 4 [root@hadoop test]# sh case.sh 输入 1 到 4 之间的数字: 你输入的数字为: 3 你选择了 3 |
再如例子case2.sh
#!/bin/bash case $1 in start) echo "starting" ;; stop) echo "stoping" ;; *) echo "Usage:{start | stop}" esac |
运行结果:
[root@hadoop test]# sh case2.sh start starting |
2.5.4 for语法
1、方式一
#!/bin/bash for N in 1 2 3 do echo $N done |
运行结果: [root@hadoop test]# sh for.sh 1 2 3 |
或
#!/bin/bash for N in {1..5} do echo $N done |
运行结果: [root@hadoop test]# sh for.sh 1 2 3 4 5 |
再如如下例子:
[root@hadoop test]# ls a.sh b.sh case.sh for.sh hello.sh login.log while2.sh break.sh case2.sh continue.sh fortest.sh if.sh test.txt while.sh [root@hadoop test]# cat fortest.sh #!/bin/bash for shname in `ls *.sh` do name=`echo "$shname" | awk -F. '{print $1}'` echo $name done [root@hadoop test]# sh fortest.sh a break b case2 case continue for fortest hello if while2 while |
通过shell来统一放开端口
一简单的字符串 枚举遍历法,利用for in格式对字符串按空格切份的功能 |
2、方式二
for ((i = 0; i <= 5; i++))
do
echo"welcome $i times"
done
或
for ((i = 0; i <= 5; i++)); do echo"welcome $i times"; done
定义for2.sh
#!/bin/bash for ((i=0;i<=5;i++)) do echo "welcome $i times" done |
运行结果如下: [root@hadoop test]# sh for2.sh welcome 0 times welcome 1 times welcome 2 times welcome 3 times welcome 4 times welcome 5 times |
2.5.5.跳出循环
在循环过程中,有时候需要在未达到循环结束条件时跳出循环,Shell使用两个命令来实现该功能:break和continue。
break命令
break命令允许跳出所有循环(终止执行后面的所有循环)
下面的例子中,脚本进入死循环直到用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break名。
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为 $aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!游戏结束" break esac done |
执行以上的代码,输入结果为:
[root@hadoop test]# sh break.sh 输入 1 到 5 之间的数字:5 你输入的数字为 5! 输入 1 到 5 之间的数字:7 你输入的数字不是 1 到 5 之间的!游戏结束 |
continue
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。对上面的例子进行修改:
#!/bin/bash while : do echo -n "输入 1 到 5 之间的数字:" read aNum case $aNum in 1|2|3|4|5) echo "你输入的数字为$aNum!" ;; *) echo "你输入的数字不是 1 到 5 之间的!" continue echo "游戏结束" ;; esac done |
运行代码,结果如下:
[root@hadoop test]# sh continue.sh 输入 1 到 5 之间的数字:7 你输入的数字不是 1 到 5 之间的! 输入 1 到 5 之间的数字:2 你输入的数字为2! 输入 1 到 5 之间的数字:2 你输入的数字为2! 输入 1 到 5 之间的数字:5 你输入的数字为5! |
shell编程--流程控制for,do-while,if-then,break,continue,case等的更多相关文章
- shell编程(四)之循环控制语句(for,while,until,break,continue,case)
for循环 语法:for NAME in LIST; do 循环体 done 列表生成方式:1.整数列表 {start...end} $(seq,[start [step]] end)2.glob / ...
- 10、shell编程+流程控制+分支嵌套
SHELL 编程 shell 是一个命令解释器,侦听用户指令.启动这些指令.将结果返回给用户(交互式的shell) shell 也是一种简单的程序设计语言.利用它可以编写一些系统脚本. ...
- shell编程流程控制
前言: 在linux shell中,通常我们将一些命令写在一个文件中就算是一个shell脚本了,但是如果需要执行更为复杂的逻辑判断,我们就需要使用流程控制语句来支持了. 所谓流程控制既是通过使用流程控 ...
- Java流程控制:增强for循环,break&continue,打印99乘法表
增强for循环:java5引入了一种主要用于数组或集合的增强for循环for(声明语句:表达式){//代码句子} 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配.其作用域限定在循环语 ...
- Linux学习 -- Shell编程 -- 流程控制
if语句 单分支 if [ 条件判断式 ]; then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 例子: 双分支 if [ 条件判断式 ] then 程序 else 程序 fi ...
- linux shell编程流程控制
条件选择 单分支条件 多分支条件 选择执行if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 f ...
- Shell工具| 流程控制
1. 流程控制 if 判断 ()[ 条件判断式 ],中括号和条件判断式之间必须有空格 ()if后要有空格 [kris@hadoop datas]$ vim if.sh #!/bin/bash -eq ...
- linux shell 之流程控制 if if else while
(1)流程控制不可以为空: (2)if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 条件 ...
- shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法
shell 函数的使用 (md中, 列表本身是有格式的, 他要产生缩进, 其次,列表项和列表项之间, 可以留有一个空行, 是合法的, 允许的) shell函数,就是 就相当于一个命令来看待和处理的, ...
随机推荐
- string [] 去除重复字符两个方法
不废话直接看图 结果 代码: this.txtListHTML.Text = String.Join(",", list.Replace("\r\n", &qu ...
- 一步一步学习Vue(十三)
最近比较忙,忙着工作交接,忙着招人.忙着各种会,更新很少,这一篇也是作为本入门系列的最后一篇了,以后可能会写一些自己在前端这块的心得或者体会了,无关乎使用什么框架,可能就是原生的js.dom.编程模式 ...
- 前端监控系统(二)JS错误日志收集篇
前端监控系统 目前已经上线,欢迎使用! 服务器搭建好了,可以着手开发了. 其实前端需要分析的数据有很多,包括,PVUV, 接口请求统计,耗时统计,JS错误统计,用户使用设备统计,用户地域分布,页面用户 ...
- UVALive - 3027:Corporative Network
加权并查集 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring&g ...
- HNOI2002 营业额统计(Splay Tree)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 题意: Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并 ...
- [bzoj4893]项链分赃
来自FallDream的博客,未经允许,请勿转载,谢谢. 有一串长度为n(n<=10^5)的项链,上面有红绿蓝三种颜色的珠子,每种颜色的珠子数目都是偶数,现在要你把它切几刀分成若干段,把其中一些 ...
- FFT模板(BZOJ2179)
实现了两个长度为n的大数相乘. #include <cstdio> #include <cmath> #include <complex> using namesp ...
- WebStorm 快捷键一览
查找/代替 快捷键 说明 ctrl+shift+N 通过文件名快速查找工程内的文件(必记) ctrl+shift+alt+N 通过一个字符快速查找位置(必记) ctrl+F 在文件内快速查找代码 F3 ...
- 动态规划--Kin
动态规划: 1.最大子序列和 2.LIS最长递增子序列 3.LCS最长公共子序列 4.矩阵连乘 5.数字金字塔 1.最大子序列和 #include<iostream> using name ...
- MockHttpServletRequestBuilder中content和param的区别
结论: Mock将URL的参数和通过使用param添加的参数添加到request中的parameter中(url参数) 而将content内容.类型并没有进行解析,直接添加到request的conte ...