设为首页 收藏本站
查看: 1349|回复: 0

[笔记]shell脚本中的流程控制

[复制链接]

尚未签到

发表于 2018-8-28 11:45:49 | 显示全部楼层 |阅读模式
  流程控制:
  选择:if,cace
  循环:for,while,until
  select:条件测试完后根据测试结果决定"选择"或"循环"
  命令结束状态变量$?值为0时执行成功,非0失败
  if条件判断基本语法:
    #1.if-then基本格式  
    if 条件测试;then   #只有条件测试为真(0)才会继续
  
        命令区域
  
    fi
  

  
    #2.if-then-else基本格式
  
    if 条件测试;then   #条件测试为真执行命令区域1,否则执行2
  
        命令区域1
  
    else
  
        命令区域2
  
    fi
  

  
    #3.if完整格式
  
    if 条件测试1;then
  
        命令区域1
  
    elif 条件测试2;then
  
        命令区域2
  
    else
  
        命令区域3
  
    fi
  

  
    #注意:
  
    #    if ,then在同一行时需用分号隔开
  
    #    elif可以有多行而else只能有一行
  
    #    条件测试可以有多种形式,单个命令或管道等
  
    #    测试部分为管道时选取最后一个命令的返回值为条件测试真假值
  
    #    使用!可以对返回值取反,但!与命令间必须有空格隔开
  复合判断:
  ((算式)) :算式运算结果只有不为0时返回真值0,不必理会特殊字符
  [[ 判断式 ]] :注意空格,不用理会特殊字符
  test 判断式 :注意特殊符号的转义
  [ 判断式 ] :同test,且需注意空格
  -a -o 进行 且,或 逻辑组合判断
  COMMAND1&& COMMAND2 :逻辑AND,COMMAND1执行成功才执行COMMAND2,COMMAND2成功返回真值0
  COMMAND1|| COMMAND2 :逻辑OR,COMMAND1执行不成功才执行COMMAND2,任一个则成功返回真值0
  注意:[[ 判断式 ]]中若使用"==""!="且这两个运算符右方的字符串单引号或双引号添加与否导致的结果不同
  判断式中字符串与判断符之间的空格
  算式判断:
  int1 -eq int2        两数相等为真
  int1 -ne int2        两数不等为真
  int1 -gt int2        int1大于int2为真
  int1 -ge int2        int1大于等于int2为真
  int1 -lt int2        int1小于int2为真
  int1 -le int2        int1小于等于int2为真
  文件判断:
  -a file        文件存在为真
  -b file        文件为块特殊文件为真
  -c file        文件为字符特殊文件为真
  -d file        目录存在为真
  -e file        文件存在为真
  -f file        文件为正规文件为真

  -g file        文件存在且设置了set group>  -h file        符号链接文件
  -p file        管道文件
  -s file        文件大小大于0
  -r file        可读为真
  -w file        可写为真
  -x file        可执行为真
  -O file        文件为有效的使用者所拥有
  -G file        文件为有效的组所拥有
  -N file        文件存在且自上次读取后曾修改过
  file1 -nt file2        文件1比文件2新,或文件1存在但文件2不存在
  file1 -ot file2        文件1比文件2旧,或文件2存在但文件1不存在
  file1 -ef file2        文件1和文件2参考到相同的设备或inode号
  case条件判断基本语法:
    case 待测项 in  
        样式1) 命令区域1;;
  
        样式2) 命令区域2;;
  
        ....
  
        *) 命令区域;;
  
    esac
  

  
    #注意:
  
    #    待测项符合某一样式则执行对应命令区域
  
    #    命令区域可由单行或多行指令组成,但最后一行指令后须以;;结尾
  
    #    样式*)通常发在最后区域以捕捉其他所有非指定样式
  for循环基本语法:
    for 变量 in 串行  
    do
  
        命令区域
  
    done
  
    #注:
  
    #串行可以是变量或是字符串的组合[彼此间用$IFS所定义的分隔符(默认空格)隔开]
  
    #    还可使用"for ((起始条件;终止条件;变化值))"类似C的用法
  
    #    for ((;1;)) 可做无穷循环,Ctrl-c终止循环
  while循环基本语法:
    while 条件测试  
    do
  
        命令区域
  
    done
  
    # 注:while ((1)) 或 while [1] 或 while true 可做无穷循环
  
    ##注意:while中条件测试返回值为真才进入下方循环!!!!
  until循环基本语法:
    until 条件测试  
    do
  
        命令区域
  
    done
  
    ##注意:until中条件测试返回值为假才进入下方循环!!!!
  select命令基本语法:
    select 选项变量 in 串行  
    do
  
        命令区域
  
    done
  
    #注:具体用法待补充(-_-)
  break与continue:
  在for, while, until, select中若想要提前结束循环,可在循环中使用break N [N为跳出的循环层数,N值大于等于1,为1时可以省略]
  在for, while, until, select中使用continue会跳过本次循环,重新开始执行下一个循环
  ^_^



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-557688-1-1.html 上篇帖子: shell脚本数据盘分区挂载到/data-kundylee 下篇帖子: Shell变量:Shell变量的定义、删除变量、只读变量、变量类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表