测试:
test -d file #测试是否为目录
test -f file
test -x file
test -r file
test -w file
test -e file 测试文件是否存在
test -s file 测试大小是为空。是否为空文件
说明:
test -x file 简写成: [ -x file ]
=====流程控制===
if 语句
语法:
if 条件
then
语句
fi
扩展 ; 分号,表示两个两个命令写在一行。互不影响。
例:
[iyunv@xuegod63 test]# ls /optt ; ls
ls: cannot access /optt: No such file or directory
example01.sh expr.sh read.sh z1.sh z.sh
[iyunv@xuegod63 test]# ls /optt && ls
ls: cannot access /optt: No such file or directory
if 例1:
cat if.sh
#!/bin/bash
echo "if test"
if [ -x /bin/ls ] ; then
/bin/ls
fi
echo "========================="
if [ -x /bin/ls ]
then
/bin/ls
fi
运行结果:
[iyunv@xuegod63 test]# ./if.sh
if test
example01.sh expr.sh if.sh read.sh z1.sh z.sh
=========================
example01.sh expr.sh if.sh read.sh z1.sh z.sh
if /else 用法:
语法:
if 条件1 ; then
命令1
else
命令2:
fi
例:
[iyunv@xuegod63 test]# cat else.sh
#!/bin/bash
if [ -x /etc/passwd ] ; then
/bin/ls
else
pwd
fi
执行结果:
[iyunv@xuegod63 test]# chmod +x else.sh
[iyunv@xuegod63 test]# ./else.sh
/root/test
多个条件的联合
-a 或 && : 逻辑与,仅当两个条件都成立时,结果为真
-o 或 || : 逻辑或 。 两个条件有一个成立 ,结果为真
更复杂的if语句:
语法:
if 条件1 ; then
命令1
elif 条件2 ; then
命令2:
elif 条件3 ; then
命令3
else
命令4
fi
综合实例: 测试文件类型
[iyunv@xuegod63 test]# cat elif.sh
#!/bin/bash
echo "input a file name:"
read file_name
if [ -d $file_name ] ; then
echo " $file_name is a dir"
elif [ -f $file_name ] ; then
echo " $file_name is file"
elif [ -c $file_name -o -b $file_name ] ; then
echo " $file_name is a device file"
else
echo " $file_name does not exist "
fi
文件测试运算符列表操作符说明举例
-b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
-d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
-f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
-g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
-k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
-p file 检测文件是否是具名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
-u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
-r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
-w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
-x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
-e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
|