shell的表达式和操作符

运维干货 feko 2年前 (2018-10-25) 197次浏览 已收录 0个评论 扫描二维码

test测试表达式特别让人混淆。

有兴趣的可以去man test 一下 为了更好地区别开来,我就分区四大块来讲:

1、首先是最常用的文件测试表达式

简单用法:

[  -f  /etc/rc.local  ]&&echo 1||echo 0

-f  file,测文件是否存在 ,文件存在则真

-d  dir,测目录是否存在,存在则真

-s filesize,测文件大小是否为0,不为0则真

-e file_exist,测文件是否存在,存在则真

-r file,文件存在且可读为真

-w file,文件存在且可写为真

-x file,文件存在且可执行为真

2、字符串表达式 简单用法:[  -n  "hi"  ]&&echo 1||echo 0 [ "abc" = "abc" ]&&echo 1||echo 0

注意等号和中括号两边必须要有空格,字符串务必用""引起。

-n "字符串",不为空则真 -z "字符串" ,为空则真,

! -z 等同

-n "字符串"  

= "字符串",相等为真 "字符串"  

!= "字符串",  不相等为真

3、整数比较表达式 简单用法:[ 12 -eq 12 ]&&echo 1||echo 0

-eq ,等于

-ne,不等于

-gt,大于

-ge,大于或等于

-lt,小于

-le,小于或等于 其他方法也可以用(())双括号加标准比较符,但是统一用[]才不会混淆

4、逻辑表达式 这将上面三种方式通过与或非结合起来用 -a、-o、!

简单使用:[ "ab" = "ab" -a 12 -eq 12 ]&&echo 1||echo 0

表达式1  -a  表达式2  ,必须两个表达式成立,才为真 表达式1  -o  表达式2  ,

只要有一个表达式成立,就为真 !  表达式  ,  取反

小结下:测试文件是否存在,比较整数大小,比较字符串是否为空或相等,再用与或非结合前三种表达式。

注意:用[ ]测试表达式括号两侧和测试符两侧都要空格,测试字符串是要用""引起了,避免不必要的错误,我觉得虽然可以用[[]]或(())双括号来替代[],但是用[]这一种方式才不会混乱。


笔记阁 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:shell的表达式和操作符
喜欢 (0)
发表我的评论
取消评论
表情 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址