1)判断表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件
有关测试和多条件测试,可以看一个例子:
这个shell的作用是判断指定目录下,每一个文件是不是shell脚本文件,判断的依据是这个文件的开始部分是不是以“#!”开始的。
#!/bin/bash
TESTCHARS=2
head="#!"
PATHNAME=$(pwd)
if [ "$#" -eq 1 -a -d "$1" ]
then
PATHNAME=$1
fi
for file in $(ls $PATHNAME)
do
if test -f $file ; then
headchar=`head -c$TESTCHARS $file`
if test $headchar="$head"
then
echo "file $file is a script"
else
echo "file $file is not a script"
fi
else
echo "file $file is not a script"
fi
done
exit 0
本文详细解读了一段用于检查目录下文件是否为shell脚本的shell脚本,通过`head`命令判断文件开头是否以`#!`开始。涉及多种条件测试如文件类型、字符串长度和内容比较等。
875

被折叠的 条评论
为什么被折叠?



