Shell判断功能与比较符号

Bash提供了一些判断功能,使用Bash内置命令test即可实现测试工作或者使用[     测试表达式    ]

注意[   测试表达式  ]两边要留有空格



-h         FILE          是否为链接文件

-f           FILE        是否为普通文件

-b         FILE          是否为块设备文件

-c          FILE           是否为字符型文件

-a/-e    FILE    是否存在

-d  FILE            是否存在且为目录

-r          FILE       是否存在且可读

-w        FILE     是否存在且可写

-x          FILE     是否存在且可执行

-s           FILE       是否存在且非空


-n          STRING    字符串长度是否为非0

-z           STRING     字符串长度是否为0 



整数比较:

-eq  等于    -ne不等于

-ge   大于等于   -le  小于等于

-gt     大于          -lt  小于

比如if  [   "$a"  -eq   "$b"     ]


字符串比较:

STRING1         ==       STRING2                字符串相等

STRING1         !=      STRING2S              字符串不相等


[]   [[]]:

[[]]  支持正则表达式

用于判断数值的大小

[root@desktop30 tmp]# name=tangkai

[root@desktop30 tmp]# [ $name = tangkai ] 判断变量是否等于这个值

[root@desktop30 tmp]# echo  $?

0

[root@desktop30 tmp]# [ $name =  [Tt]angkai ] 如果只有一个[]号,系统会认为[Tt]angkai是字符

[root@desktop30 tmp]# echo  $?

1

[root@desktop30 tmp]# [[ $name =  [Tt]angkai ]]  在加一个[]号,[Tt]angkai才会被运算

[root@desktop30 tmp]# echo  $?

0




例子:

test    -d    /etc/passwd   &&  ehco  "Y"   ||   echo  "N"

[ -e   /etc/passwd   ]   &&  echo   "Y"          ||   echo  "N"

[ -z      $tt     ]             &&  echo  "Y"     ||  echo  "N"

[   22  -eq   22    ]    &&  echo  "Y"  ||     echo  "N"

[   22  -ge   32    ]    &&  echo  "Y"  ||     echo  "N"



你可能感兴趣的:(shell)