发布时间:2014-09-05 13:35:06作者:知识屋
示正确,1表示返回错误。
e s t一般有两种格式,即:
test condition
或
[ c o n d i t i o n ]
使用方括号时,要注意在条件两边加上空格。
测试文件状态的条件表达式很多,但是最常用的可在表1 7 - 1中查到。
表17-1 文件状态测试
- d 目录 - s 文件长度大于0、非空
- f 正规文件 - w 可写
- L 符号连接 - u 文件有s u i d位设置
- r 可读 - x 可执行
使用两种方法测试文件s c o r e s . t x t是否可写并用最后退出状态测试是否成功。记住, 0表示
成功,其他为失败。
[root@localhost huangcd]# ls -l ok.txt
-rw-r--r-- 1 root root 30 12-03 00:21 ok.txt
[root@localhost huangcd]# [ -w ok.txt ]
[root@localhost huangcd]# echo $?
0
[root@localhost huangcd]# [ -x ok.txt ]
[root@localhost huangcd]# echo $?
1 //不可执行
下面的例子测试是否存在a p p s b i n目录:
[root@localhost huangcd]# [ -d appsbin ]
[root@localhost huangcd]# echo $?
1
测试文件权限是否设置了s u i d位:
[root@localhost huangcd]# [ -u ok.txt ]
[root@localhost huangcd]# echo $?
1
测试文件状态是否为O K,但是有时要比较两个文件状态。s h e l l提供三种逻辑操作完成此
功能。
-a 逻辑与,操作符两边均为真,结果为真,否则为假。
-o 逻辑或,操作符两边一边为真,结果为真,否则为假。
! 逻辑否,条件为假,结果为真。
下面的例子测试两个文件是否均可读。
[root@localhost huangcd]# [ -r ok.txt -a -r sed.out ]
[root@localhost huangcd]# echo $?
0
字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。
字符串测试有5种格式。
test "string"
test str_op "string"
test "string" str_op "string"
[ str_op string ]
[ string str_op string ]
这里,s t r i n g o p e r a t o r可为:
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
要测试环境变量E D I TO R是否为空:
[root@localhost huangcd]# [ -z $EDITOR ]
[root@localhost huangcd]# echo $?
0 //是空的
取值是否是v i?
[root@localhost huangcd]# [ $EDITOR="vi" ]
[root@localhost huangcd]# echo $?
0
测试TAPE盒TAPE2是否相等。
[root@localhost huangcd]# TAPE="/dev/rmt0"
[root@localhost huangcd]# TAPE2="/dev/rmt1"
[root@localhost huangcd]# [ "$TAPE" = "$TAPE2" ]
[root@localhost huangcd]# echo $?
1 //不相等
测试数值可以使用许多操作符,一般格式如下:
" n u m b e r " n u m e r i c o p e r a t o r " n u m b e r "
或者
[ " n u m b e r " n u m e r i c o p e r a t o r " n u m b e r " ]
n u m e r i c o p e r a t o r可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。
[root@localhost huangcd]# number=130
[root@localhost huangcd]# "$number" -eq "100"
bash: 130: command not found
[root@localhost huangcd]# [ "$number" -eq "130" ]
[root@localhost huangcd]# echo $?
0
[root@localhost huangcd]# [ "$number" -gt "100" ] //是否大于
[root@localhost huangcd]# echo $?
0
e x p r命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
e x p r也是一个手工命令行计数器。
[root@localhost huangcd]# expr 10+10
10+10
[root@localhost huangcd]# expr 10 + 10
20
[root@localhost huangcd]# expr 30 / 3
10
使用乘号时,必须用反斜线屏蔽其特定含义。因为s h e l l可能会误解显示星号的意义。
[root@localhost huangcd]# expr 30 /* 3
90
e x p r在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从( e x p r)命令接受输出并将之放入循环变量。
[root@localhost huangcd]# LOOP=0
[root@localhost huangcd]# LOOP=`expr $LOOP + 1`
[root@localhost huangcd]# echo LOOP
LOOP
[root@localhost huangcd]# echo $LOOP
1
[root@localhost huangcd]# LOOP=`expr $LOOP + 1`
[root@localhost huangcd]# echo $LOOP
2
e x p r也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成
功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为
“h e l l o”和“h e l l o”。
本章涉及e x p r和t e s t基本功能,讲到了怎样进行文件状态测试和字符串赋值,使用其他的
条件表达式如if then else和c a s e可以进行更广范围的测试及对测试结果采取一些动作。
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能