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函数,就是 就相当于一个命令来看待和处理的, ...
随机推荐
- [C#]设计模式-建造者模式-创建型模式
介绍完工厂模式,现在来看一下建造者模式.建造者模式就是将一系列对象组装为一个完整对象并且返回给用户,例如汽车,就是需要由各个部件来由工人建造成一个复杂的组合实体,这个复杂实体的构造过程就被外部化到一个 ...
- 机器学习技法:15 Matrix Factorization
Roadmap Linear Network Hypothesis Basic Matrix Factorization Stochastic Gradient Descent Summary of ...
- Redis数据类型--string
在Redis中支持丰富的数据类型的存储系统,包括:字符串(string),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),与范围查询,bitmaps,h ...
- poj 1269 线段与线段相交
Intersecting Lines Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13605 Accepted: 60 ...
- hdu 4609 (FFT求解三角形)
Problem Description King OMeGa catched three men who had been streaking in the street. Looking as id ...
- bzoj2560串珠子 状压dp+容斥(?)
2560: 串珠子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 515 Solved: 348[Submit][Status][Discuss] ...
- bzoj2434阿狸的自动机
转载自 http://www.cnblogs.com/zj75211/p/6934976.html ●BZOJ 2434: [Noi2011]阿狸的打字机 ●赘述题目 (题意就不赘述了) ●解法: ...
- Spring学习笔记6——注解方式测试
需要下载junit-4.12.jar和hamcrest-all-1.3.jar,将下载好的包导入到项目当中. 修改TestSpring, 并运行1. @RunWith(SpringJUnit4Clas ...
- 数据结构与算法 —— 链表linked list(05)
反转一个单链表. 进阶:链表可以迭代或递归地反转.你能否两个都实现一遍? 示例 : 给定这个链表:1->2->3->4->5 返回结果: 5->4->3->2 ...
- 数据库的事务、ACID及隔离级别
事务 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位.例如,在关系数据库中,一条或一组SQL语句.整个程序都可以是一个事务. 事务和程序是两个概念,一个程 ...