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

Shell中条件判断语法与判断条件

[复制链接]

尚未签到

发表于 2018-8-25 10:47:19 | 显示全部楼层 |阅读模式
一,简介
  Shell各种判断结构和运算符的用法是shell编程的基础,了解shell的判断、运算符和一些退出状态
  对后面的学习有很重要的影响。shell有一个内部命令test经常用于对判断语句
  进行测试一种或几种状态的条件是否成立
二. 判断条件
  (1)Linux的shell中的测试命令,用于测试某种条件或某几种条件是否真实存在
  测试命令是判断语句和循环语句中条件测试的工具,对判断和运算符的比较测试有很大的帮助。
  (2)测试条件为真,返回一个0值;      为假,返回一个非0整数值
  测试命令有两种方式,一种test expression(表达式);另一种命令格式[ expression ]
  其中”[“是启动测试命令,”]”要与之配对,而且”[“和”]”前后的空格必不可少
  此方式常作为流程控制语句的判断条件
  2.1 字符串判断
  str1 = str2      当两个串有相同内容、长度时为真
  str1 != str2       当串str1和str2不等时为真
  -n str1        当串的长度大于0时为真(串非空)
  -z str1        当串的长度为0时为真(空串)
  这个地方有必要举个小例子,我们编程的时候经常做一些使用喜欢使用空格表示空
  但shell中空格会被判断成一个字符,比如:
  [  -n  ” ” ]  这个值echo $?会返回0,说明字符串不为空。
  [  -z  ”  ” ] 这个值echo $?会返回非空,说明里边不是空。
  2.2 数字的判断
  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为真
  2.3 文件的判断
  -e file                                                    若文件存在,则为真
  -d file                                                    若文件存在且是一个目录,则为真
  -b file                                                    若文件存在且是一个块特殊文件,则为真
  -c file            若文件存在且是一个字符特殊文件,则为真
  -f file            若文件存在且是一个规则文件,则为真
  -g file            若文件存在且设置了SGID位的值,则为真
  -h file            若文件存在且为一个符合链接,则为真
  -k file            若文件存在且设置了“sticky”位的值
  -p file            若文件存在且为一已命名管道,则为真
  -r file            若文件存在且可读,则为真
  -s file            若文件存在且其大小大于零,则为真
  -u file            若文件存在且设置了SUID位,则为真
  -w file            若文件存在且可写,则为真
  -x file            若文件存在且可执行,则为真
  -o file            若文件存在且被有效用户ID所拥有,则为真
  2.4 逻辑判断
  !expr                                                      若expr为假则复合表达式为真,expr可以是任何有效的测试表达式
  expr1 -a expr2         若expr1和expr2都为真则整式为真
  expr1 -o expr2         若expr1和expr2有一个为真则整式为真
  补充: 系统变量
  $n                 该变量与脚本被激活时所带的参数相对应
  .n是正整数,与参数位置相对应($1,$2…)
  $?                                                                    前一个命令执行后的退出状态
  $#                 提供脚本的参数号
  $*                 所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2
  $0                 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
  $@                 所有这些参数都分别被双引号引住。若一个脚本接收到两个参数,$@等价于$1$2
  $$                 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID
  $!                 前一个后台命令的进程号
  3、退出状态
  (1)Linux系统,每当命令执行完成后,系统返回一个退出状态。若退出状态值为0,表示命令运行成功;反之若退出状态值不为0,则表示命令运行失败。最后一次执行命令的退出状态值被保存在内置变量”$?”中。
  (2)exit命令格式:exit status(status在0~255之间),返回该状态值时伴随脚本的退出,参数被保存在shell变量$?中。
三、总结
  (1)shell的各种运算符是编程的重要环节。IF和CASE条件判断结构的应用,使问题有了多分支的选择。
  (2)本文仅简单的介绍重要的基础知识,若要熟练使用,还需要大量的练习。


运维网声明 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-556298-1-1.html 上篇帖子: Shell脚本编程入门 下篇帖子: Shell编程入门到精通
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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