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

第七章 shell学习之退出、测试、判断及操作

[复制链接]

尚未签到

发表于 2018-8-30 06:18:45 | 显示全部楼层 |阅读模式
  退出状态
  $?记录了上一个命令的退出状态:
  0 运行成功
  1~125 运行失败
  126 找到命令但无法执行
  127 未找到要运行的命令
  >128 命令被系统强制结束
  测试
  两种方式:
  test expression
  [ expression ]
  注意[]的两边必须要空格
  比较条件为真返回0,假返回非0(C语言为真返回非0正整数,假返回0)
  算数比较运算符
  n1 -eq n2 等于返回0,不等于返回1
  n1 -gt n2
  n1 -ge n2
  n1 -le n2
  n1 -lt n2
  n1 -ne n2 不等于返回0,等于返回1
  例:
  [root@localhost tmp]# n1=15
  [root@localhost tmp]# [ "$n1" -eq 15 ]
  [root@localhost tmp]# echo $?
  0
  [root@localhost tmp]# test "$n1" -eq 15
  [root@localhost tmp]# echo $?
  0
  [root@localhost tmp]# [ $n1 -ne 15 ]
  [root@localhost tmp]# echo $?
  1
  [root@localhost tmp]# test $n1 -ne 15
  [root@localhost tmp]# echo $?
  1
  注意:只能比较整数,不能比较浮点数
  字符串运算符
  方式1:(只能用test运算符)
  -n string 测试字符串string是否不为空(不为空是真,值为0,为空值为1),-n为默认,可省略
  -z string 测试字符串string是否为空(为空是真,值为0,不为空值为1)
  方式2:
  string1=string2 测试string1是否与string2相同
  string1!=string2 测试string1是否与string2不同
  例:
  [root@localhost tmp]# str1="hello"
  [root@localhost tmp]# test -n "$str1"
  [root@localhost tmp]# echo $?
  0
  [root@localhost tmp]# test -z "$str1"
  [root@localhost tmp]# echo $?
  1
  [root@localhost tmp]# [ "$str1"!=" " ]
  [root@localhost tmp]# echo $?
  0
  [root@localhost tmp]# [ "$str1" -n " " ]    #方式1不能用于[]
  bash: [: -n: binary operator expected
  [root@localhost tmp]# test "$str1"!=" "   #方式2通用
  [root@localhost tmp]# echo $?
  0
  文件操作符
  test file_operator File
  [ file_operator file ]
  file_operator:
  -d 是否为目录
  -f 是否为普通文件
  -e 是否存在
  -r 是否可读
  -w 是否可写
  -x 是否可执行
  -s 长度是否不为0
  -L 是否符号化链接
  如:
  [ -d clc.txt ]
  test -d clc.txt
  echo $?
  逻辑运算符
  ! 非
  -a 与
  -o 或
  [ ! -e clc.txt ]   #clc.txt不存在为真(值为0)
  [ -e clc.sh -a -x clc.sh ]  #clc.sh存在并且可执行则结果为真
  判断
  1.
  if expression
  then
  ...
  fi
  2.
  if expression; then
  ...
  fi
  3.
  if expression1
  then
  ...
  else
  ...
  fi
  4.
  if expression1
  then
  ...
  elif expression2
  then
  ...
  else
  ...
  fi
  expression为表达式,如[ -e clc.sh -a -x clc.sh ]
  case结构
  case variable in
  value1)
  ...;;
  value2)
  ...;;
  *)
  ...;;
  esac
  算术运算符
  +;-;*;/;%;**(幂运算)
  例:
  let "z=8/5*5"
  echo $z    #结果为5,因为8/5取整结果为5
  位运算符
  > 右移
  | 按位与
  ~ 按位非
  ^ 按位异或
  例:
  [root@localhost tmp]# let "value=~8"
  [root@localhost tmp]# echo $value
  -9
  [root@localhost tmp]# let "value=12|8"
  [root@localhost tmp]# echo $value
  12
  [root@localhost tmp]# value=8
  [root@localhost tmp]# let "value

运维网声明 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-558559-1-1.html 上篇帖子: 第六章 shell学习之变量和引用 下篇帖子: shell中正则表达式元字符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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