Linux里的几类比较主要和if使用

来源:互联网 发布:linux系统编程 第2版 编辑:程序博客网 时间:2024/06/08 15:54

if语句的执行规则和这几类比较关系密切,顺带提下,本人在此有时搞混淆,以此为记。

bash shell中的if语句,如果命令的退出状态是0,将执行then后面的所有命令,如果命令的退出状态是0以外的其他值,那么then后面的命令将不会执行。

bash shell 中的test语句,如果test命令中列出的条件评估值为TRUE,test命令以0退出状态代码退出。有以下两种形式,if和test结合说明。注:condition左右两侧有一个空格。

if test conditionthen      commandsfi
或者

if [ condition ]then     commandsfi
test命令有以下3类评估条件:

1.数值比较

2.字符串比较

3.文件比较

数值比较

可以是变量也可以是数值也可以互相比较

比较描述比较描述n1 -eq n2等于n1 -lt n2小于n1 -ge n2大于等于n1 -le n2小于等于n1 -gt n2大于n1 -ne n2不等于

字符串比较

字符串比较参数列表比较描述比较描述str1=str2等于str1>str2大于str1!=str2不等于-n str检查长度是否大于0str1<str2小于-z str检查长度是否为0

字符串比较会遇到两个问题:

1.大于小于号一定要转义,否则会当作重定向号。

2.大于和小于顺序与在sort命令中顺序不同,在test命令中,大写字母小于小写字母,而sort正好相反。

3.字符串比较变量尽量加双引号。

文件比较

比较描述-d file检查文件是否是存在并且是一个目录-e file检查文件是否存在-f  file检查file是否存在并且是一个文件-s file检查file是否存在并且不为空-w file检查file是否存在并且可写-x file检查file是否存在并且可执行-O file检查file是否存在并且被当前用户拥有-G file检查file是否存在并且默认组为当前用户组-r file检查文件是否存在并且可读file1 -ot file2检查file1是否比file2旧file1 -nt file2检查file1是否比file2新