5、利用test命令的判断功能 首先判断一下,让用户输入一个文件名,我们判断 a、这个文件是否存在?若不存在则给予一个“Filename does not exist”的信息,并中断程序; b、若这个文件存在,则判断它是个文件或目录,结果输出“Filename is regular file”或“Filename is directory”; c、判断一下,执行者的身份对这个文件或目录所拥有的权限,并输出权限数据;
[root@RHEL6 scripts]# more sh05.sh
#!/bin/bash
#program:
# User input a filename,program will check the flowing;
echo -e "please input a filename, I will check the filename's type and permission. \n\n"
read -p "Input a filename :" filename
test -z $filename && echo "You MUST input a filename."&&exit 0 //test -z表示判定字符串($filename)是否为0,若string为空字符串,则为true。此处的意思是,如果用户没有输入文件名,那么输出"You MUST input a filename."因为echo命令一定会执行成功也就是他的$?一定为0,因此执行exit退出,并且告诉系统的返回值为0
test !-e $filename && echo "The filename '$filename' Do NOT exist"&&exit 0 //test !-e $filename表示反向状态,如果该文件不存在(若存在者不向下执行该语句,直接进入下面的判断语句)则执行&& echo "The filename '$filename' Do NOT exist" ,接着执行exit 0
#开始判断文件类型与属性
test -f $filename && filetype="regulare file"//test -f $filename判断这个文件是否为普通文件,如果是普通文件则执行filetype="regulare file"
test -d $filename && filetype="directory"//test -d $filename判断这个文件是否为目录
test -r $filename && perm="readable"//test -r $filename判断这个文件权限是否为可读
test -w $filename && perm="$perm writable"//test -r $filename判断这个文件权限是否为可写
test -x $fllename && perm="$perm executable"//test -r $filename判断这个文件权限是否为可执行
#开始输出信息
echo "The filename:$filename is a $fileytype"//输入文件的文件类型