shell编程——判断条件

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/bash
read -p "Input the filename:" filename
test -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"

 

 

posted @ 2013-03-25 21:15  jihite  阅读(2117)  评论(2编辑  收藏  举报