小苏的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
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
相关文章推荐
- shell编程笔记一 条件测试
- Shell学习笔记——算数运算与条件测试
- linux笔记 第六天 bash编程入门之变量、条件判断、条件测试和for循环等
- Shell编程中if-elif-else条件分支语句测试
- Shell笔记3——脚本的条件测试与比较
- 小苏的Shell编程笔记之一
- 小苏的Shell编程笔记之二--Shell变量及其相关操作
- Linux学习笔记:bash的算术运算及条件测试
- shell编程:引用变量、内部变量、条件测试、字符串比较、整数比较、文件比较、逻辑操作、引号、通配符、调试执行
- shell编程:引用变量、内部变量、条件测试、字符串比较、整数比较、文件比较、逻辑操作、引号、通配符、调试执行
- 小苏的Shell编程笔记之三--数组和算术运算
- shell编程学习笔记6--条件判断(循环)与流程控制
- shell编程学习之条件测试
- shell编程条件测试
- 小苏的Shell编程笔记之五--Shell的控制结构
- Shell编程笔记--条件判断
- 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等
- shell编程(条件判断与流程控制)学习笔记
- 测试总结和组合测试条件 (笔记)
- 小苏的Shell编程笔记之六--Shell中的函数