Shell语言-19-表达式

1. test表达式

test测试表达式,利用test命令进行条件测试表达式,test命令与测试表达式之间至少有一个空格

1.1 [测试表达式]

通过[]中括号进行条件测试表达式,[]中括号边界与测试表达式之间至少有一个空格

1.2 [[测试表达式]]

通过[[]]双括号进行条件测试表达式,[[]]双括号与测试表达式之间至少有一个空格

1.3 ((测试表达式))

通过(())双小括号进行条件测试表达式,(())双小括号两端不需要空格,常用于整数对比

1.4 $[] 整数运算

1.5$()

命令替换 shell会执行括号的cmd,然后将结果作为变量进行替换,替换只能替换标准输出,错误输出不能替换

1.6 ${}

shell中变量的原型,用于限定变量名称的范围,并且支持通配符

1.7 [] 条件测试

1.8 () 子shell中执行

1.9 {} 在当前shell执行

#()是重新开一个子shell然后执行,而{}则是在当前shell里执行
#()最后一个命令可以不用分号,{}最后一个命令要用分号。
#()里第一个命令和左边括号不必有空格,而{}第一个命令和左括号之间必须有一个空格

[root@Centos-root473791 ~]# (ls)
11.sh  2.sh  99.sh  abc.sh           awkscript  caseD.sh  forD.sh      install.log.syslog  readme.sh
1.sh   3.sh  aaaa   anaconda-ks.cfg  awk.txt    forD2.sh  install.log  mainD.sh            whileD.sh
[root@Centos-root473791 ~]# {ls;}
-bash: syntax error near unexpected token `}'
[root@Centos-root473791 ~]# { ls;} #()里第一个命令和左边括号不必有空格,而{}第一个命令和左括号之间必须有一个空格
11.sh  2.sh  99.sh  abc.sh           awkscript  caseD.sh  forD.sh      install.log.syslog  readme.sh
1.sh   3.sh  aaaa   anaconda-ks.cfg  awk.txt    forD2.sh  install.log  mainD.sh            whileD.sh
[root@Centos-root473791 ~]# 

()和{}里的某个命令的重定向会影响该命令,而{}里的会影响内外的所有命令
在这里插入图片描述

2.文件表达式

linux 下表达式文件表达式

-e    filename     如果 filename文件不管是文件还是目录只要存在,则为真 
-d    filename     如果 filename文件存在且为目录,则为真
-f    filename     如果 filename为常规文件且存在,则为真
-L    filename     如果 filename为符号链接,则为真
-r    filename     如果 filename文件存在且有可读权限,则为真 
-w    filename     如果 filename文件存在且有可写权限,则为真
-x    filename     如果 filename文件存在且有可执行权限,则为真
-s    filename     如果文件文件且文件大小不为0,则为真 
-h    filename     如果文件是软链接,则为真 
filename1 -nt filename2   如果 filename1比 filename2新,根据文件的修改之间计算,则为真。
filename1 -ot filename2  如果 filename1比 filename2旧,根据文件的修改之间计算,则为真。 

在这里插入图片描述

3. 整数变量表达式

[]和test中使用        在[[]](())中使用            说明
-eq                      ===                 等于,全拼为equal
-nq                      !=                   不等于,全拼为not equal
-gt                      >                    大于,全拼为greater than
-ge                      >=                   大于等于 greater equal
-lt                      <                    小于,全拼为less than
-le                      <=                   小于等于,全拼为 less equal

在这里插入图片描述
在这里插入图片描述
C语言风格比较
在这里插入图片描述
实列:
在这里插入图片描述

3. 1 字符串变量表达式

if  [ $a = $b ]                     如果string1等于string2,则为真 ,字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]       如果string1不等于string2,则为真     
if  [ -n $string  ]                 如果string 非空(非0),返回0(true) 
if  [ -z $string  ]                 如果string 为空,则为真
if  [ $sting ]                      如果string 非空,返回0 (和-n类似)  

3.2 字符串比较表达式

   参数                        功能
 -z  s1           如果字符串s1的长度为0,则测试条件为真
 -n  s1           如果字符串s1的长度大于0,则测试条件为真
 sl               如果字符串s1不是空字符串,则测试条件为真
 === s1=s2      如果s1等于s2,则测试条件为真,"="前后应有空格
 !=   s1!=s2     如果s1不等于s2,则测试条件为真
 <    s1         如果按照字典顺序s1在s2之前,则测试条件为真
 >    s1>s2      如果按自定义顺序s1在s2之后,则测试条件为真

在这里插入图片描述
注意
对于字符串的比较,一定要将字符串加比引号后再比较,如[ -n “$string”]
=与!=可用于判断两个字符串是否相同
在这里插入图片描述

4. 逻辑表达式

[]或test中    在[[]](())中     说明
-a                 &&            and与,两者都为真则为真
-o                 ||            or或,一个为真则为真
!                  !            not非,相反则为真

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alan0517

感谢您的鼓励与支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值