Ubuntu shell 条件测试

条件测试

test 测试条件 测试内容

[测试条件 测试内容] #用的更为广泛


测试文件类型


test -e 文件名 测试文件是否存在,存在为真

[ -e 文件名 注意:[]的左右两侧必须加空格!


附:test测试结果并不显示,需用echo$? 来显示test的返回值

返回0语句正确,非0表示不正确。

拓展:test -e test.txt && echo Yes || echo No

test -f 文件名 判断是否是普通文件#如果是文件的话,返回Yes,若是目录返回非No

test -d 文件名 判断是否为目录

test -b 文件名 判断是否为块设备文件

test -c 文件名 字符设备文件


测试文件权限


test -r 文件名 判断是否有可读权限

test -w 文件名 可写

test -x 文件名 执行

test -s 文件名 判断是否为非空白,有内容为真


两个文档比较


[file1 -nt file2 ] file1是否比file2

[file1 -ot file2 ] file1是否比file2

[file1 -ef file2 ] file1file2是否是链接文件,是否是快捷方式,软链接


两个数值之间判断

[n1 -eq n2 ] n1n2是否相等#推荐使用下面的 ==符号来判断

测试:aa=123;bb=123

[$aa -eq $bb ] && echo Yes || echo no

[n1 -ne n2 ] n1n2是否不等

[n1 -gt n2 ] n1大于n2

[n1 -lt n2 ] n1小于n2

[n1 -ge n2 ] n1大于等于n2

[n1 -le n2 ] n1小于等于n2



判断字符串


[-z 字符串判断字符串是否为空,变量值没有内容/为空则是真


[字符串1 == 字符串2] 判断字串1是否与字串2相等#判断采用的是字符串型

[$aa == $bb ] && echo 1 || echo 2

附:aa=abc

[“$aa” == “abc” ] && echo Yes || echo No #为什么把两个“”去掉测试也成功


[字符串1 != 字符串2] 判断字串是否不等


多重判断


-a 逻辑与

[-z $file -a -e $file ]

-o逻辑或

逻辑非


例子7:判断输入的文件类型和文件权限注:一定要练习

#!/bin/bash


echo-e "nide wenjian shifou cunzai? wenjian quanxian shi shenme?\n\n"


read-p "please input filename:" -t 30 filename


test-z $filename && echo "please input filename!!" &&exit 1

#判断字符串是否为空,如果为空,打印错误信息,并且退出程序!


test! -e $filename && echo "wenjian bucunzai!" &&exit 2

#-e 变量 判断文件是否存在,存在为真 ! 逻辑非


test-f $filename && filetype=putong

#-f 是否为普通文件

test-d $filename && filetype=mulu

#-d 是否为目录

test-r $filename && perm="read"

#-r是否有可读权限

test-w $filename && perm="$perm write"

#-w 是否可写

test-x $filename && perm="$perm executable"

#-x 是否可执行


echo-e "the filename is : $filename \n"

#打印文件名

echo-e "filetype is : $filetype \n"

#打印文件类型

echo-e "permision is : $perm \n"

#打印文件权限


多命令顺序执行


1)命令; 命令2;命令命令123顺序执行。之间没有任何关系如:cd;ls ;date #date 用于打印当前系统时间


2)命令1 && 命令命令1正确执行后,命令2才会执行

3)命令1 || 命令命令1执行不正确,命令2才会执行,也就是说:如果第一个命令正确执行,那么第二个命令就不会执行了!

test测试:

a)ls && echo "Yes" || echo "No"

b)ls skdjfkdj && echo "Yes" || echo "No"


lsaa && echo "cunzai" || echo "bu cunzai!" 执行ls aa,判断如果正确,输出“存在”。如果不存在,输出“不存在”


管道符:两个命令之间有联系,

命令1 | 命令命令1的执行结果,作为命令2的执行条件

注意:第一条命令一定得有输出


转自:http://blog.csdn.net/zjf280441589/article/details/17455515


你可能感兴趣的:(Linux(Ubuntu))