登陆论坛
|
论坛注册
|
加入收藏
|
设为首页
|
RSS
首页
Linux频道
软件下载
开发语言
技术论坛
嵌入式频道
|
数据库开发
|
WEB开发
|
软件开发
|
嵌入应用
|
内核研究
|
SHELL
|
输入您的搜索字词
提交搜索表单
您当前的位置:
首页
>
Linux频道
>
Linux开发区
>
SHELL
Bourne Shell及shell编程
时间:2006-06-28 22:35:53 来源:Linux联盟收集 作者:
Linux联盟收集
逻辑操作,可以进行and/or,与其他条件联合使用
6w6Linux联盟
6w6Linux联盟
a. 测试字符数据: shell变量通常民政部下均作为字符变量
6w6Linux联盟
str1 = str2 二者相长,相同
6w6Linux联盟
str1 != str2 不同
6w6Linux联盟
-n string string不为空(长度不为零)
6w6Linux联盟
-z string string为空
6w6Linux联盟
string string不为空
6w6Linux联盟
6w6Linux联盟
例:
6w6Linux联盟
$ str1=abcd #在含有空格时必须用引号括起来
6w6Linux联盟
$ test $str1=abcd
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
$ str1="abcd "
6w6Linux联盟
$ test $str1=abcd
6w6Linux联盟
$ echo $?
6w6Linux联盟
1
6w6Linux联盟
Note: 在test处理含有空格的变量时最好用引号将变量括起来,否则会出现错误的
6w6Linux联盟
结果,
6w6Linux联盟
因为shell在处理命令行时将会去掉多余的空格,而用引号括起来则可以防止
6w6Linux联盟
shell去掉这些空格.
6w6Linux联盟
例:
6w6Linux联盟
$ str1=" "
6w6Linux联盟
$ test $str1
6w6Linux联盟
$ echo $?
6w6Linux联盟
1
6w6Linux联盟
$ test "$str1"
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
$ test -n $str1
6w6Linux联盟
test: argument expected
6w6Linux联盟
$ test -n "$str1"
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
$
6w6Linux联盟
6w6Linux联盟
b. 整数测试: test与expr相同,可以将字符型变量转换为整数进行操作,expr进行
6w6Linux联盟
整数的算术运算,而test则进行逻辑运算.
6w6Linux联盟
6w6Linux联盟
表达式 说明
6w6Linux联盟
---------------------------------------
6w6Linux联盟
int1 -eq int2 相等?
6w6Linux联盟
int1 -ne int2 不等?
6w6Linux联盟
int1 -gt int2 int1 > int2 ?
6w6Linux联盟
int1 -ge int2 int1 >= int2 ?
6w6Linux联盟
int1 -lt int2 int1 < int2 ?
6w6Linux联盟
int1 -le int2 int1 <= int2 ?
6w6Linux联盟
6w6Linux联盟
例:
6w6Linux联盟
$ int1=1234
6w6Linux联盟
$ int2=01234
6w6Linux联盟
$ test $int1 -eq $int2
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
6w6Linux联盟
c. 文件测试:检查文件状态如存在及读写权限等
6w6Linux联盟
6w6Linux联盟
-r filename 用户对文件filename有读权限?
6w6Linux联盟
-w filename 用户对文件filename有写权限?
6w6Linux联盟
-x filename 用户对文件filename有可执行权限?
6w6Linux联盟
-f filename 文件filename为普通文件?
6w6Linux联盟
-d filename 文件filename为目录?
6w6Linux联盟
-c filename 文件filename为字符设备文件?
6w6Linux联盟
-b filename 文件filename为块设备文件?
6w6Linux联盟
-s filename 文件filename大小不为零?
6w6Linux联盟
-t fnumb 与文件描述符fnumb(默认值为1)相关的设备是一个终端设备?
6w6Linux联盟
6w6Linux联盟
d. 测试条件之否定,使用!
6w6Linux联盟
例:
6w6Linux联盟
$ cat /dev/null > empty
6w6Linux联盟
$ test -r empty
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
$ test -s empty
6w6Linux联盟
1
6w6Linux联盟
$ test ! -s empty
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
e. 测试条件之逻辑运算
6w6Linux联盟
-a And
6w6Linux联盟
-o Or
6w6Linux联盟
6w6Linux联盟
例: $ test -r empty -a -s empty
6w6Linux联盟
$ echo $?
6w6Linux联盟
1
6w6Linux联盟
f. 进行test测试的标准方法
6w6Linux联盟
因为test命令在 shell编程中占有很重要的地位,为了使shell能同其他编程语言
6w6Linux联盟
一样
6w6Linux联盟
便于阅读和组织, Bourne Shell在使用test测试时使用了另一种方法:用方括号将
6w6Linux联盟
整个
6w6Linux联盟
test测试括起来:
6w6Linux联盟
6w6Linux联盟
$ int1=4
6w6Linux联盟
$ [ $int1 -gt 2 ]
6w6Linux联盟
$ echo $?
6w6Linux联盟
0
6w6Linux联盟
6w6Linux联盟
例: 重写unload程序,使用test测试
6w6Linux联盟
#!/bin/sh
6w6Linux联盟
#unload - program to backup and remove files
6w6Linux联盟
#syntax: unload directory
6w6Linux联盟
6w6Linux联盟
#check arguments
6w6Linux联盟
if [ $# -ne 1 ]
6w6Linux联盟
then
6w6Linux联盟
echo "usage: $0 directory"
6w6Linux联盟
exit 1
6w6Linux联盟
fi
6w6Linux联盟
6w6Linux联盟
#check for valid directory name
6w6Linux联盟
3
/
12
|‹
‹‹
1
2
3
4
5
6
››
›|
来顶一下
返回首页
发表评论
共有
条评论
用户名:
密码:
验证码:
匿名发表
相关文章
无相关信息
栏目更新
栏目热门
站内搜索:
Linux频道
下载频道
图库
商品
嵌入式频道
高级搜索
网站首页
|
关于我们
|
服务条款
|
广告服务
|
联系我们
|
网站大全
|
免责声明
|
返回顶部
Copyright © 2007-2008 xxlinux.com, All rights reserved.
Powered by linux联盟
京ICP备05012402号