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

shell脚本编程之运算

[复制链接]

尚未签到

发表于 2018-8-28 10:54:53 | 显示全部楼层 |阅读模式
  一、数学运算
  1、expr命令
  此命令可以在命令行执行数学运算操作。
DSC0000.jpg

  由于此命令使用时过于麻烦,所以不推荐使用。
  2、方括号和双圆括号
  $[ EXPRESSION ]
  $(( EXPRESSION ))
  在之前的实例中已经出现过方括号的表达式:$[$a+$b]。
  3、let命令
DSC0001.jpg

  4、算术运算符
  x+=y:相当于x=x+y
  x-=y:相当于x=x-y
  x*=y:相当于x=x*y
  x/=y:相当于x=x/y
  x++: 相当于x=x+1
  x--: 相当于x=x-1
  二、字符串连接
  变量引用后方直接跟字串时,变量名要加{}。
DSC0002.jpg

  三、条件测试
  条件测试的表达式可以使用以下三种格式:
  [ expression ]:注意中括号与表达式之间有空格;
  ` expression `:注意中括号与表达之间有空格;
  test expression:上面的两种格式其实都是test命令的其它格式。
  test命令可以进行3种类型的条件判断:整数测试、字符串测试、文件测试。
  1、整数测试
  -eq:测试两个整数是否相等;
  -ne:测试两个整数是否不等,不等为真,相等为假;
  -gt:测试一个数是否大于一个数,大于为真,否则为假;
  -lt:测试一个数是否小于一个数,小于为真,否则为假;
  -ge:测试一个数是否大于一个数,大于等于为真,否则为假;
  -le:测试一个数是否大于一个数,小于等于为真,否则为假;
  实例:如果两个参数相等则显示"equal",否则显示"different"。
DSC0003.jpg

  2、字符测试
  ==:测试是否相等,等为真,不等为假;
  !=:测试是否不等,不等为真,等为假;
  =~:模式配置;
  -z string:测试指定字符串是否为空,空为真不空为假
  -n string:测试指定字符串是否为空,空则假不空为真
  -s string:测试指定字符串是否不空,不空为真,空则为假
  实例:
DSC0004.jpg

DSC0005.jpg

  上面是一个使用"-z"的例子,如果改为-n的话则如下图所示:
DSC0006.jpg

  注:变量比较时最好加上引号(单双都可以),否则如果变量为空的话,会报错。
  3、文件测试
  -a FILE:测试FILE存在为真,否则为假;
  -e FILE:测试FILE是否存在,存在为真,否则为假;
  -l/-L FILE:软链接文件;
  -b:块设备;
  -c:字符设备;
  -S:套接字文件;
  -p:命名管道;
  -s:非空文件为真;
  -f FILE:测试FILE是否为普通文件;
  -d FILE:测试指定路径是否为目录;
  -r FILE:测试文件对当前用户是否可读;
  -w FILE:测试文件对当前用户是否可写;
  -x FILE:测试文件对当前用户是否可执行;
  -N FILE:修改文件时间比访问时间新则为真;
  内容重定向到文件中,但文件还没有被打开过的情况
  file1 -nt file2:file1比file2新则为真;
  file1 -ot file2:file1比file2旧则为真。
  实例:如果/test存在则将其重命名为/new-test,否则创建这个目录:
DSC0007.jpg

  实例:给定一个参数,首先判断此参数是否存在,如果存在判断是否为文件,若为文件确保其有执行权限:
DSC0008.jpg

  验证:
DSC0009.jpg

  4、组合测试条件
  在多个条件间实现逻辑运算
  -a:与关系 [ condition1 -a condition2 ]
  -o:或关系 [ condition1 -o condition2 ]
  !:非关系  [ ! condition ] 或 [ -not condition ]
DSC00010.jpg

DSC00011.jpg

  四、命令间的逻辑关系
  &&:逻辑与,只有当左边的条件为真时才会执行右边的语句;
  ||:逻辑或,当左边的条件为假时才会执行右边的语句。
  上面的实例也可以使用逻辑与来完成:
DSC00012.jpg

DSC00013.jpg



运维网声明 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-557646-1-1.html 上篇帖子: shell脚本一键安装MySQL5.5 下篇帖子: Week 1 solved question: change environment by shell-11112569
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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