shell脚本-循环选择语句

过程式编程语言:

顺序执行

选择执行

循环执行

注:条件中的变量,可以在执行语句中使用,不用在加上"$"。

if语句

  1. 根据命令的退出状态来执行命令
  2. 单分支
  3. if 判断条件;then
  4. 条件为真的分支代码
  5. fi
  6. 双分支
  7. if 判断条件; then
  8. 条件为真的分支代码
  9. else
  10. 条件为假的分支代码
  11. fi
  12. 多分支
  13. if 判断条件 1 ; then
  14. 条件为真的分支代码
  15. elif 判断条件 2 ; then
  16. 条件为真的分支代码
  17. elif 判断条件 3 ; then
  18. 条件为真的分支代码
  19. else
  20. 以上条件都为假的分支代码
  21. fi
  22. 逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if 语句

case 语句

  1. case用法:
  2. case 变量引用 in
  3. PAT1)
  4. 分支1
  5. ;;
  6. PAT2)
  7. 分支2
  8. ;;
  9. ...
  10. *)
  11. 默认分支
  12. ;;
  13. esac
  14. case 支持glob 风格的通配符:
  15. *: 任意长度任意字符
  16. ?: 任意单个字符
  17. []:指定范围内的任意单个字符
  18. a|b: a b

for语句

  1. for 变量名 in 列表;do
  2. 循环体
  3. done
  4. 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
  5. or
  6. for ((exp1;exp2;exp3)); do
  7. COMMANDS
  8. done
  9. 控制变量初始化:仅在运行到循环代码段时执行一次
  10. 控制变量的修正表达式:每轮循环结束会先进行控制变量修正运算,而后再做条件判断
  11. 列表生成方式:
  12. 直接给出列表
  13. 整数列表:
  14. (a) {start..end}
  15. (b) $(seq [start [step]] end)==` `
  16. 返回列表的命令
  17. $(COMMAND)
  18. 使用glob,如:*.sh
  19. 变量引用;
  20. $@, $*

while语句

  1. while CONDITION; do
  2. 循环体
  3. done
  4. CONDITION
  5. 循环控制条件,进入循环之前,先做一次判断,每一次循环之后会再次做判断。
  6. 条件为"true" ,则执行一次循环,直到条件测试状态为"false" 终止循环。
  7. CONDTION 一般应该有循环控制变量,而此变量的值会在循环体不断地被修正。
  8. 进入条件:
  9. CONDITION true
  10. 退出条件:
  11. CONDITION false
  12. 特殊用法
  13. 遍历文件的每一行
  14. while read line(任意); do
  15. 循环体
  16. done < /PATH/FROM/SOMEFILE
  17. or
  18. 命令、文件或其他(标准输出) |while read line; do
  19. 循环体
  20. done
  21. 依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将行赋值给变量line

until语句

  1. until CONDITION; do
  2. 循环体
  3. done
  4. CONDITION
  5. 循环控制条件,进入循环之前,先做一次判断,每一次循环之后会再次做判断。
  6. 条件为"false" ,则执行一次循环,直到条件测试状态为"true" 终止循环。
  7. CONDTION 一般应该有循环控制变量,而此变量的值会在循环体不断地被修正。
  8. 进入条件:
  9. CONDITION false
  10. 退出条件:
  11. CONDITION true

控制语句

  1. continue
  2. 用于循环体中,直接继续下个循环。
  3. continue [N],提前结束第N层的本轮循环,而直接进入下一轮判断,最内层为第1层。
  4. break
  5. 用于循环体中,退出整个循环。
  6. break [N],提前结束第N层循环,最内层为第1层。
  7. shift
  8. 用于将参量列表list左移指定次数,缺省为左移一次。
  9. shift [n],移动N个位置,参量列表list 一旦被移动,最左端的那个参数就从列表中删除。
  10. while 到循环遍历位置参量列表时,常用到 shift
  11. $1=a, $2=b, $c=d
  12. shift
  13. $1=b, $2=d
  14. shift
  15. $1=d
  16. wait
  17. 用于等待命令执行结束,并exit 退出

select语句

  1. select 变量名 in LIST ; do
  2. 循环体命令
  3. done
  4. select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示 PS3 提示符,等待用户输入。
  5. 用户输入菜单列表中的某个数字,执行相应的命令。
  6. 用户输入被保存在内置变量 REPLY中。
  7. PS3="INPUT:"
  8. select menu in bai hei hong lv;do
  9. echo $menu
  10. done
  11. selectcase的对比
  12. select 是个无限循环,因此要记住用 break令退出循环,或用 exit命令终止脚本,也可以按 ctrl+c退出循环。
  13. select 经常和 case 联合使用
  14. for循环类似,可以省略in LIST,此时使用位置参量。

trap信号捕捉

  1. trap ' 触发指令' 信号
  2. 自定义进程收到系统发出的指定信号后,将执行触发指令,而不会执行原操作。
  3. trap ' ' 信号
  4. 忽略信号的操作
  5. trap '-' 信号
  6. 恢复原信号的操作
  7. trap -p
  8. 列出自定义信号操作
  9. trap 示例
  10. #!/bin/bash
  11. trap 'echo “signal:SIGINT"' int
  12. trap -p
  13. for((i=0;i<=10;i++))
  14. do
  15. sleep 1
  16. echo $i
  17. done
  18. trap '' int
  19. trap -p
  20. for((i=11;i<=20;i++))
  21. do
  22. sleep 1
  23. echo $i
  24. done
  25. trap '-' int
  26. trap -p
  27. for((i=21;i<=30;i++))
  28. do
  29. sleep 1
  30. echo $i
  31. done

shell脚本-循环选择语句的更多相关文章

  1. 3.shell脚本循环试题

    shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...

  2. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

  3. 没事就要多做多练,Shell脚本循环例题做一做

    Shell脚本循环例题                 一.示例1                 二.示例2                 三.示例3                 四.示例4 ...

  4. shell 脚本之判断语句 if 详解

    使用 Linux 系统这么长时间,对 shell 脚本也算是比较熟悉.其实不管是搞开发,还是搞运维,shell 脚本都是必备的基本技能.这次抽时间好好总结一下 shell 方面的知识,综合的再学习一下 ...

  5. Shell脚本之七 选择、循环结构

    一.if else if 语法格式 if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -e ...

  6. shell脚本、if语句、for循环语句

    shell在shell脚本中,如果用户不输入东西,系统不自动退出,this is a bug!文件测试语句:-d -f -r -w -x -e逻辑测试语句:“&&”与(同时满足) “| ...

  7. shell脚本循环执行mysql语句

    参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...

  8. shell脚本循环嵌套

    嵌套循环 在循环语句内使用任意类型的命令,包括其他循环命令,叫做嵌套循环.因为是在迭代中迭代,需要注意变量的使用以及程序的效率问题. 下面举一个for循环嵌套for循环的例子: wangsx@SC-2 ...

  9. 《linux就该这么学》第五节课,shell脚本的各种语句!

    第四章shell语句 (据课本和虚拟机实验排版,借鉴请改动)               4.2:shell脚本   脚本包括:脚本声明,脚本注释,脚本内容和命令 例:#!/bin/bash      ...

随机推荐

  1. C: 字符数组中的空去掉

    #include <stdio.h> #include <string.h> int main() { char a[50] = "nearby! "; i ...

  2. 向appstore提交app流程

    http://www.cocoachina.com/newbie/tutorial/2013/0508/6155.html http://blog.csdn.net/holydancer/articl ...

  3. jQuey中的return false作用是什么?

    jQuey中的return false作用是什么?在众多的语句中都有return false的使用,当然对于熟悉它的开发者来说,当然是知根知底,知道此语句的作用,当然也就知道在什么时候使用此语句,不过 ...

  4. buf.writeInt32BE()函数详解

    buf.writeInt32BE(value, offset[, noAssert]) buf.writeInt32LE(value, offset[, noAssert]) value {Numbe ...

  5. Python爬虫入门教程: 半次元COS图爬取

    半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...

  6. C语言之自定义__DATE__与__TIME__

    /******************************************************************* * > File Name: 05-ymd.c * &g ...

  7. 【Codeforces 9989C】A Mist of Florescence

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 四个大角 然后每个大角里面包着一些其他颜色的就好 [代码] #include <bits/stdc++.h> using name ...

  8. 【Codeforces 404C】Restore Graph

    [链接] 我是链接,点我呀:) [题意] 每个节点的度数不超过k 让你重构一个图 使得这个图满足 从某个点开始到其他点的最短路满足输入的要求 [题解] 把点按照dep的值分类 显然只能由dep到dep ...

  9. 常州模拟赛d7t2 数组

    题目背景 HJZ 有很多玩具.他最喜欢玩的玩具是一个可以变化的数组. 题目描述 HJZ 的数组初始时有 n 个元素.他可以把一个位置上的数加上或减去一个固定的 数 x. 一天 LJZ 和 HZY 来 ...

  10. 微信小程序初探(二):阅读官方demo源码

    阅读demo有助于理解逻辑,而且demo源码中应该包含了框架开发人员想要表达的意思的精华,先从app.js着手来阅读. 附带贴下说明: https://mp.weixin.qq.com/debug/w ...