您的位置:首页 > 运维架构 > Shell

小苏的Shell编程笔记之四--条件测试

2011-03-31 00:59 295 查看
1. Shell中的测试命令

test命令是Shell编程中条件判断最常用的测试命令。格式为:
test 表达式
test命令也可以用中括号取代:
[ 表达式 ]
需要注意的是:表达式和两个中括号之间必须有空格[/b][/b]
2. 测试文件属性
文件属性测试表达式用于测试文件的属性状态,包括文件是否可写入,可执行,文件是否存在,是否是目录等等。
文件属性测试表达式
-b file 测试文件是否是块设备(block device),是就返回真
-c file 测试文件是否为字符设备(char device),是就返回真
-r file 测试文件是否为只读
-w file 测试文件是否可写
-x file 测试文件是否可执行
-s file 测试文件是否存在且大于0
-d file 测试文件是否是目录
-f file 测试文件是否是普通文件
-e file 测试文件是否存在
范例:
测试文件存在且是块设备
#!/bin/bash
echo “Please enter the file name :”
read FILENAME
if test -b $FILENAME ; then[/b]
cp $FILENAME /dev
else
echo “$FILENAME is not a block device file”
第四行的test –b是重点,可以换成-c –d 等参数进行检测
3. 测试数值
数值的测试包括相等测试、不相等测试、大于测试、大于等于测试等。
常用的数值测试表达式
n1 –eq n2 n1等于n2,则值为真 equal
n1 -ne n2 n1不等于n2,则值为真 not equal
n1 -gt n2 n1大于n2 ,则值为真 greater than
n1 -lt n2 n1小于n2,则值为真 less than
n1 -ge n2 n1 大于等于n2,则值为真 greater equal
n1 -le n2 n1小于等于n2 ,则值为真 less equal
范例:
相等测试
#!/bin/bash
echo “Please enter the first number:”
read N1
echo “Please enter the second number:”
read N2
if test $N1 –eq $N2 ;then[/b]
echo “equal”
else
echo ”not equal”
fi
4. 测试字符串
字符串测试包括相等测试、不相等测试、长度为零测试、长度不为0测试以及非空测试
字符串测试表达式
-z s1 如果字符串s1的长度为0,则为真
-n s1 如果字符串s1的长度不为0,则为真
s1 = s2 如果字符串s1与s2相等,则为真
s1 != s2 如果字符串s1与s2不相等,则为真
s1 如果字符串s1不是空串,则为真

实例 相等测试
#!/bin/bash
echo “Please enter the first string :”
read S1
echo “Please enter the second string :”
read S2
if test $S1 = $S2 ;then [/b]
echo “equal”
else
echo “not equal”
fi
5. 测试逻辑运算符
测试命令可以由单个测试条件构成,也可以由多个测试条件构成。
逻辑运算符
-a 二进制“与”操作符
-o 二进制“或”操作符
! 一元“非”操作符
实例:测试逻辑与
#!/bin/bash
read X
if test $X –ge 10 –a $X –le 50 ;then [/b]
echo “$X is between 10 and 50”
else
echo “$X is not between 10 and 50”
fi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息