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函数,就是 就相当于一个命令来看待和处理的, ...
随机推荐
- windows下 在cmd中输入ls命令出现“ls不是内部或外部命令“解决方法
1.新建一个文件命名为 ls.bat 2.打开编辑这个文件 输入: @echo off dir 3.将这个文件放在C:\windows目录下
- C#之Winform跨线程访问控件
C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它.此时它将会在内部调用ne ...
- angualar2——八大组成
Angular2 模块 理解: Angular 应用是模块化的,并且 Angular 有自己的模块系统,它被称为 Angular 模块或 NgModules. 组件 组件是一个项目主干,一个模块由多个 ...
- 【Swift】UIPresentationController的使用方法
UIPresentationController是ios8.0的新特性哦,使用需要注意 先上一个效果图 第一步: 连线选择segue类型为,present Modally 第二步:需要演示的控制器,自 ...
- [SCOI 2005]王室联邦
Description “余”人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两个不 ...
- [AtCoder arc090F]Number of Digits
Description 题库链接 记 \(d\) 在十进制下的位数为 \(f(d)\) .给出询问 \(S\) ,求有多少对 \((l,r)\) 使得 \[\sum_{i=l}^r f(i)=S\] ...
- [IOI 2011]ricehub
Description 乡间有一条笔直而长的路称为“米道”.沿着这条米道上 R 块稻田,每块稻田的坐标均为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ...
- [ZJOI2007]Hide 捉迷藏
Description 捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩 捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条 ...
- 零开始:NetCore项目权限管理系统:基础框架搭建
有兴趣的同学可以一起做 喜欢NetCore的朋友,欢迎加群QQ:86594082 源码地址:https://github.com/feiyit/SoaProJect 新建一个空的解决方案,建立对应的解 ...
- spring 自定义事件发布及监听(简单实例)
前言: Spring的AppilcaitionContext能够发布事件和注册相对应的事件监听器,因此,它有一套完整的事件发布和监听机制. 流程分析: 在一个完整的事件体系中,除了事件和监听器以外,还 ...