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

2、shell条件测试,运算符,选择结构,for循环结构

[复制链接]

尚未签到

发表于 2018-8-28 07:40:05 | 显示全部楼层 |阅读模式
  一、shell条件测试      man bash  //查看帮助
  条件测试的命令
  test 选项 文件名或目录名
  或
  [ 选项 文件名或目录名 ]
  例:
  [ -e /etc/passd ]
  文件状态
  -f              //判断是不是文件,是文件为真
  -d //判断是不是目录,是目录为真
  -e//判断是不是存在,存在为真
  -r//判断是否可以阅读,可以阅读为真
  -w//判断是否可写,可写为真
  -x//判断是否可执行,可执行为真
  -l//判断是否为链接,是链接为真
  数值比较(整数比较)
  [ 数值1 选项 数值2 ]
  或
  test 数值1 选项 数值2
  等于 -eq
  不等于 -ne
  小于 -lt
  小于等于 -le
  大于 -gt
  大于等于  -ge
  h
  [ 字符选项比较 ]
  等于 ==
  不等于 !=
  -z 字串为空为真
  ! -z 字串不为空为真
  例:
  [ $USER==root ] && echo "admin"
  [ -z $w  ]
  逻辑比较(判断时,是2个或2个以上条件时使用逻辑判断)
  逻辑与  &&  或用 -a   多个条件要同时成立
  逻辑或  ||  或用 -o   或用多个条件只要有一个条件成立就可以
  逻辑非  !  取号  -z为空  !-z 加了叹号也就是取反不为空
  [ 5 -gt 6 ] || [ 7 lt 8 ] || [ 0 -lt 1 ]
  或
  [ 5 -gt 6 -o 7 -lt 8 -o 0 -lt 1 ]
  流程控制 是否执行 取决于条件判断的判断结果是否为真。条件判断结果为真,
  流程控制才会执行,反之不会执行。对不同的对象做判断,要用不同的判断方式和选项
  二、Shell运算符与运算命令
  + - * / %
  ++ --
  += -= *= /= %=
  运算命令
  expr 数值1 运算符 数值2
  例1:
  #!/bin/bash
  #计算用户从终端输入的任意2个数的和
  read -p "请输入第一个数" num1
  read -p "请输入第二个数" num2
  sum=`expr $num1 + $num2`
  echo "$num1 + $num2 = $sum"
  例2
  expr 只能做整数运算 默认返回计算结果
  #expr num1 + num2 - num3 \* num4        //乘号要做转义
  #expr 10 % 8
  #a=10
  #b=20
  #sum=`expr $a + $b`
  ++ 自加运算 每次数字自动加1
  -- 自减运算 每次数字自动减1
  let 只做运算,不返回计算结果
  let 变量运算符
  i=1
  let i++     //i=i+1
  echo $i
  j=10
  let j--    //j=j-1
  echo $j
  += -= *- /= %=
  i=10
  let i+=2   //i=i+2
  echo $i
  加法算的第二种运算方式 $(()) $[] 的使用
  #echo $((10*30))
  #x=10
  #b=20
  #echo $((x*y))
  #echo $[10*30]
  i=10
  echo $((++i))    //先执行运算,后参与程序
  i=10
  echo $((i++))    //先参与程序,后执行运算
  Shell里的流程控制
  选择结构 if    (只有条件判断结果为真时,才执行相应的操作)
  单分支
  if 条件
  条件判断成立时,要执行的操作
  .......
  fi
  例:
  read -p "please input ip address" addr
  if [ -z $addr ];then
  echo "你没有输入要ping的ip地址"
  exit
  fi
  ping -c 3 $addr &> /dev/null
  if [ $? -eq 0 ];then
  echo "主机在线"
  fi
  echo "script over"
  双分支
  if 条件测试命令;then
  条件判断成立时,要执行的操作
  .........
  else
  条件判断不成立时,要执行的操作
  .........
  fi
  #!bin/bash
  service sshd status &> /dev/null
  if [ $? -eq 0 ];then
  echo "sshd in running"
  else
  service sshd start
  fi
  多分支
  if 条件测试命令1;then
  条件测试成立时执行的命令序列
  ......
  ......
  elif 条件测试命令2;then
  条件测试成立时执行的命令序列
  ......
  ......
  elif 条件测试命令3;then
  条件测试3成立时执行的命令序列
  ......
  ......
  elif 条件测试命令N;then
  条件测试N成立时执行的命令序列
  ......
  ......
  else
  以上所有的条件判断都成立时执行的命令
  ......
  ......
  fi
  循环结构(反复执行相同操作时,使用循环结构)
  for语法格式
  for 变量名 in 变量值列表
  do
  当变量值列表有值赋给变量名时,执行的语句块
  ......
  .....
  doneasswd
  #!/bin/bash
  #for i in 1 2 3 4 5
  #for i in `seq 30 45`
  #for i in `seq 254`
  #for i in `seq 10 2 30`
  #for i in {1..30}
  #for i in {a..z}
  for i in `head /etc/`
  for i in `ls /shell/*.sh`
  do
  echo $i
  done
  while
  C-for
  until
  分支结构 case   (根据变量值的匹配结果执行相应的操作)


运维网声明 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.yunweiku.com/thread-557469-1-1.html 上篇帖子: 1、shell别名,管道,用户配置文件,变量,read-YHT的运维笔记 下篇帖子: 4、Shell函数,Shell数组,变量替换
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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