任何编程语言都有控制结构,Shell也不例外,这些也是需要牢记的。

1.  if 结构

最简单的判断形式就是if结构。语法为:

if 表达式

then 命令行

{else  命令行}

fi

当然,if也可以嵌套使用,如下所示

if 表达式

then 命令行

else

if 表达式

then 命令行

else 命令行

fi

fi

2.  case结构

分支结构case是一个多路分支判断结构,可以测试一个表达式的值,并根据值的结果选择相应的分支程序。也就是可以替代if..then..elif..结构,语法为:

case 表达式 in

模式1)  命令1;;   //模式里可有多个选项,可用|表示或关系,但必须以)结束

模式2)  命令2;;   //每个命令分支必须以;;结束

…………

esac                 //esac表示case结构结束

另外:模式中可以使用Shell通配符。可以用*)表示都不满足的情况,相当于PHP中的switch中的default。

实例:

#!/bin/bash

WEEK=`date +%u`

case $WEEK in

6) echo “today is Saturday”;;

7) echo “today is Sunday”;;

1|2|3|4|5) echo “today is not weekend”;;

esac

当然,倒数第二行也可以换做 *) echo “today is not weekend”

实例:case的嵌套

#!/bin/bash

case $1 in

student)

case $2 in

Jim) echo”hello Jim , your number is 34”;;

Tom) echo “hello Tom, your number is 23”;;

*)echo “sorry ,I can’t find your information”;;

esac

;;

teacher)

case $2 in

Lucy) echo ”Mrs Lucy, your number is 4”;;

Mary) echo “Mrs Mary, your number is 6”;;

esac

;;

*)echo “输入不正确”

esac

3.  select结构

select循环结构通常用于生成菜单,生成的菜单前面具有编号,用户敲一下编号,就执行相应的代码,可以达到交互的效果。

select的结构:

select 变量 in列表

do

命令表

done

其中,列表是一个由字符串组成的序列,在程序执行select时,该列表将以菜单的形式进行显示并等待用户输入,用户输入的选项将传递给“变量”并执行select结构体中的命令,do….done之间是select的循环体,do表示循环开始,done表示循环结束。

select总是与case结构一起使用。

可以使用break命令或者exit命令结束脚本。

select结构实例:

#!/bin/bash

echo “------查询一周计划--------”

select N in 周一 周二 周三 周四 周五 周六 周日 退出

do

case $N in

周一) echo “新的一周,又该上班了”;;

周二) echo “终于过去一天了”;;

周三) echo “这周过去一半了,不错,哈哈”;;

周四) echo “下午休息一下”;;

周五) echo “明天可以过周末了,不错”;;

周六) echo “今天可以出去玩了”;;

周日) echo “好好睡一觉”;;

退出) echo “谢谢使用!” ;  break ;;

esac

done

需要注意的是,echo和输出内容之间需要有空格。

运行效果为:

4.  while循环

循环用于反复执行一系列的语句,正是循环语句,提高了我们的效率。最简单的循环就是while循环,也叫当型循环。

while语句的语法格式:

while 表达式

do

命令表

done

其中,“表达式”为循环控制条件,每次循环开始前都会检查,如果“表达式”的值为真,就执行do 和done之间的代码,执行完毕之后,会重新对表达式进行检测,如果为真,则继续进入循环体,如果为假,则跳出循环。

实例:输出1~N的平方值,N由用户输入

#!/bin/bash

echo “Please enter a number:”

read N

i =1

while [ $i –le $N ]     //这里的中括号相当于test,并且需要注意的是中括号前后有空格

do

RESULT=`expr $i \* $i`

echo “$i------------$RESULT”

i=$(($i+1))

done

下面说一下while的嵌套,举个乘法表的例子:

#!/bin/bash

i=1

while [ $i –le 9 ]

do

j=1

while [ $j –le $i ]

do

RESULT=`expr $j \* $i`

echo –n “$j * $i =$RESULT ”

j=$(($j+1))

done

echo “”

i=$(($i+1))

done

注意:为了避免死循环,while语句中的循环体中必须有一条修改循环控制条件的代码。

5.  for循环

Shell中的for循环和其他语言的for循环有些不同,是通过一个列表来控制循环的次数

语法结构:

for 变量 in 列表

do

命令表

done

列表通常由一系列由空格作为分隔符的字符串组成

列表中的字符串依次赋值给变量,每次赋值后执行命令表中的指令

循环结束之后,继续执行done后面的语句

例子:新建四个账号

#!/bin/bash

for name in TOM LILY JIM LUCY

do

useradd $name

done

6.  until循环

until循环也称为直到型循环,while和until循环的区别在于,while循环在条件为真时继续执行循环,而until则是在条件为假时继续执行循环。

语法结构:

until 条件测试语句

do

命令表

done

实例:

#!/bin/bash

echo “enter your type”

read type

until [ $type = “quit” ]

do

echo “your type is $type”

echo “enter your type”

read type

done

7.  break continue和exit

在流程控制语句中,break和continue是两个比较重要的语句,可以控制程序走向。

break语句可以直接跳出循环,continue语句可以跳过本次循环的其余代码而进行下一次的循环,而exit可以直接跳出正在执行的脚本

break的实例:

#!/bin/bash

echo “Please enter the number”

read N

for i in 1 2 3 4 5 6 7 8 9

do

if [ $i –eq $N ];then

echo “exit the for loop”

break

else

echo “this is the $i time”

fi

done

转载于:https://blog.51cto.com/xiaosu/531246

小苏的Shell编程笔记之五--Shell的控制结构相关推荐

  1. 小苏的Shell编程笔记之六--Shell中的函数

    http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...

  2. Linux Shell编程笔记10 Shell数组的补充

    数组可以通过下标或值进行索引,如果不存在,则值为空.比如: #!/bin/bash arr[0]=hello echo ${arr[1]} # 输出空内容 使用@输出所有数组的内容,使用#和@输出元素 ...

  3. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  4. 小苏的Shell编程笔记之一

    引言:个人感觉,Shell脚本对于Linux系统管理员太重要了,一条Shell语句可以达到几百条C语言代码的效果,尤其是当我们面对大型的集群的时候,Shell脚本更是把我们的工作效率提高了上千倍,听说 ...

  5. 小苏的Shell编程笔记之四--条件测试

    1.  Shell中的测试命令 test命令是Shell编程中条件判断最常用的测试命令.格式为: test 表达式 test命令也可以用中括号取代: [ 表达式 ] 需要注意的是:表达式和两个中括号之 ...

  6. linux+shell+func,Linux shell编程笔记总结

    Linux Shell学习笔记简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称.shell是用户和Linux内核之间的接 ...

  7. 高级shell编程笔记(第十二章 外部过滤器,程序和命令)

    第十二章 外部过滤器,程序和命令 标准的UNIX命令使得脚本更加灵活.通过简单的编程结构把shell指令和系统命令结合起来,这才是脚本能力的所在. 12.1 基本命令 新手必须掌握的初级命令 ls 基 ...

  8. 高级shell编程笔记(第三十三章 杂项)

    第三十三章 杂项 33.1 交互式和非交互式的shell和脚本 交互式的shell在tty终端从用户的输入中读取命令.另一方面,shell能在启动时读取启动文件,显示一个提示符并默认激活作业控制.用户 ...

  9. Linux bash shell 编程笔记(基础篇)

    文章目录 Part.I Introduction Chap.I 传送门 Chap.II 基础知识 Chap.III 实操笔记 Part.II 程序设计控制结构 Chap.I if 分支程序 Chap. ...

最新文章

  1. Making Your Own iPhone Frameworks. In Xcode
  2. Linux下ipconfig分析及C语言实现
  3. c语言把文件导入链表,【求解答】c关于把文件数据放进链表,并将链表遍历
  4. 推荐系统笔记(评价指标及效果)
  5. html header文件格式类
  6. Sublime Text如何安装和卸载插件
  7. oracle回退脚本怎么写_短视频爆款文案怎么写?130个短视频爆款文案、脚本范例分享!...
  8. centos 环境变量_CentOS系统下为用户添加root权限
  9. 程序员“离职小技巧”
  10. Redis面试题汇总(附答案),面试突击专用
  11. 插件Sytrus合成器功能介绍
  12. MATLAB中基于GUI的噪声抑制imnoise,medfilt2命令
  13. FAT32文件系统格式详解
  14. 渗透测试PTES标准流程(超详细)
  15. python匹配邮箱_在Python中使用正则表达式同时匹配邮箱和电话并进行简单的分类...
  16. python自动注册邮箱_Python自动登录126邮箱的方法
  17. python教育数据挖掘_Python 数据分析 与 数据挖掘 (介绍篇)
  18. Java面试题(持续日更)
  19. 半世浮尘洗铅华,余半生为君温酒煮茶
  20. 通过yarn命令查看日志

热门文章

  1. #DAYU200#如何动态调节屏幕亮度
  2. 大数据必看经典书籍:大数据从入门到深入书籍推荐
  3. 证券市场基本法律法规
  4. 物流--配送管理(九)
  5. 2022北京眼睛健康展,北京眼镜展,北京近视矫正展,眼视光展
  6. 一套完整的SEO建站规则
  7. 【电商】电商后台设计—售后流程
  8. Python(4) 用Python破解有道翻译反爬虫机制
  9. java反射成员变量的值_Java反射如何修改private final成员变量值
  10. JS 保留两位小数,不足用0补齐;js 实现对数字保留两位小数时 不足两位 自动补0;JavaScript保留两位小数,自动补零