shell编程中有两种形式进行对判断条件进行测试:
形式一:test
形式二:[ ]
举个小例子说明其用法及其注意事项:
例子:判断文件 "new.txt" 是否存在,存在现实“exist', 不存在现实”not exitst"
test -e new.txt && echo "exist" || echo "not exist" [ -e new.txt ] && echo "exist" || echo "not exist"
执行结果:
实现细节说明:当一次执行很多命令式&&、 ||很有用处,它们是从前往后依次执行。
对于&&:当前面执行条件正确时,执行&&之后的,错误就停住了
对于||:当前面的执行条件错误时,执行||之后的,正确就停住了。
因此根据&&、||的特性可以对条件作出一个模式“条件 && 执行1|| 执行2”。当条件为真时执行1;当为假时“条件&&执行1”绝对为假,因此执行2
注意事项:
- [ -e new.txt ]中每个字符(包括[、 -e、 new.txt、 ])都有空格。[-e new.txt]是不正确的。
- [ ]里面的变量名要用" "引起来,如[ "$filename" -e]
- [ ]里面的常量要用引号(单或双引起来)
下面把判断条件列举下:
下面整个案例实战一把:
1.提示用户输入文件名
2.判断文件名是否存在。若不存在,提示“文件不存在”,退出程序;否则继续执行
3.判断文件名是文件还是目录
4.判断文件名的权限(r w x)
#!bin/bashread -p "Input the filename:" filenametest -z "You must input a filename." && exit 0#判断是否存在test ! -e $filename && echo "The file $filename DO NOT exist." && exit 0#判断文件名类型test -f $filename && filetype="rugulre file"test -d $filename && filetype="directory"#判断文件执行权限test -r $filename && perm="readable"test -w $filename && perm="writable"test -x $filename && perm="execuate"#输出结论echo "The file $filename is a $filetype"echo "And the permission is: $perm"