2>测试两个整数之间关系
test命令和expr命令相同,也能够把字符转变成整数,然后对其操作。test命令对两个数进行比较,使用的操作符如下:
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
下面的例子反映了字符串比较和数字比较的不同:
$str1=1234
$str2=01234
$test $str1 = $str2
$echo $?
结果显示:1
$test $str1 -eq $str2
$echo $?
结果显示:0
3>有关文档的测试
使用test进行的第三类测试是测试文档的状态,用户能够测试文档是否存在,是否可写连同其他文档属性。下面是文档测试时使用的选项。注意只有文档存在时,才有可能为真。
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文档为正规文档为真
-d file 文档为目录为真
-c file 文档为字符特别文档为真
-b file 文档为块特别文档为真
-s file 文档大小非0时为真
-t file 当文档描述符(默认为1)指定的设备为终端时为真
4>复杂的条件测试(and 、or 、not)
-a 和
-o 或
! 非
就是组合条件了,任何高级语言中都有的(NOT 、AND 、OR),例如:
$test -r em.null -a -s em.null
$echo $?
结果显示:1
说明了em.null并不是可读并且非空的文档
5>另一种执行test的方法
bsh中更有另一种执行test命令的方法,就是把测试条件放到一对[ ]中,例如:
$int1=4
$[ $int1 -gt 2 ]
$echo $?
结果显示:0
要注意在[ 的后面和 ]符号的前面要有一个空格。
下面我们用test命令写个简单但比较完善的程式:
#-- 备份程式
#-- 检查参数
if [ $# -ne 1 ]
then
echo "请在程式名后面指出要备份文档所在目录!"
exit 1
fi
#-- 检查目录名是否有效
if [ !-d "$1" ]
then
echo "$1 不是个目录!"
exit 2
fi
cd $1
ls -a | cpio -o >/dev/mnt0
if [ $? -eq 0 ]
then
rm *
else
echo "cpio执行不成功!备份失败..."
exit 3
fi
6>空命令
在Bsh中用 : 代表空命令,就是充个数,什么都不做
7>嵌套if语句和elif结构
检查条件1
A:当条件1为真,则执行一部分操作
B:若条件1为假,检查条件2
1)若条件2为真,执行另外一部分操作
2)若条件2为假,检查条件3
3)若条件3为真,执行其他一部分操作
语法如下:
if command
then
command
else
if command
then
command
else
if command
then
command
fi
fi
fi
8>elif语句
嵌套if语句有时会给用户带来混乱,特别是什么时候fi语句很难判断。因此Bourne Shell又提供了elif语句。elif是else-if的缩写,他表示是if语句的继续。格式为:
if command
then
command
elif command
then
command
elif command
then
command
fi
上面介绍的嵌套if语句和elif语句完成相同的功能,用户能够根据自己的喜好选择一种使用。
9>case语句
前面说的elif语句替代if-then-else语句,但有时在编程时还会碰到对同一变量进行多次的测试,该情况能够用多个elif语句实现,但更有一种更简单的方法就是用case语句。
case语句不但取代了多个elif和then语句,还能够用变量值对多个模式进行匹配,当某个模式和变量值匹配后,其后的一系列命令将被执行,下面是case语句使用的语句。
case value in
pattem 1)
command
command;;
pattem 2)
command
command;;
....
pattem)
command;
esac
case语句只执行其中的一组命令,当变量值和多个模式相匹配时,只有第一个匹配的模式对应的命令被执行。";;"表示该模式对应的命令部分程式。
通过学习下面的read语句,我们们再举例子说明case语句的用法。
10>read语句
Shell程式不但能够通过命令行参数得到输入数据,还能够使用read命令提示用户输入数据,其语法格式为:
read var1 var2... ...varn
当Bsh碰到一个read语句时,在标准输入文档中读取数据直到一个换行符。此时Shell在解释输入行时,不进行文档名或变量的替换,只是简单地删除多余的空格。然后Shell将输入行的第一个字的内容给变量1,第二个给变量2,直到任何变量都赋上值或是输入行为空。若输入行中字的个数超过变量个数,Shell将把输入行中剩余的任何字的内容都赋给最后一个变量。当变量个数多于输入行字的个数时候,多于的变量将赋一个空值。输入行的每一个字是由空格分隔的一个字母和数字组成的字符串。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



