Chinaunix首页 | 论坛 | 博客
  • 博客访问: 791088
  • 博文数量: 180
  • 博客积分: 4447
  • 博客等级: 上校
  • 技术积分: 1582
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-03 14:51
文章分类

全部博文(180)

文章存档

2014年(6)

2013年(8)

2011年(125)

2009年(35)

2008年(1)

2007年(5)

分类:

2009-02-26 20:04:42

 
1.字符串测试
string1 = string2 string1等于string2(=两侧必须有空格)
string1 != string2 string1不等于string2(!=两侧必须有空格)
string (string不为空)
-z string (string的长度为0)
-n string (string的长度不为0)
例子:
test -n $word
test tom = sun
 
2.整数测试:
int1 -eq int2 int1等于int2
int1 -ne int2 int1不等于int2
int1 -gt int2 int1大于int2
int1 -ge int2 int1大于或等于int2
int1 -lt int2 int1小于int2
ini1 -le int2 int1小于或等于int2
3.逻辑测试:
expr1 -a expr2 逻辑与
expr1 -o expr2 逻辑或
!expr  逻辑非
4.文件测试:
-b file 当file存在并且是块文件返回为真
-c file 当file存在并且是字符文件返回为真
-d pathname 当pathname存在并且是一个目录返回为真
-e pathname 当由pathname指定的文件或目录存在时候返回为真
-f file 当file存在并且是正规文件的时返回真
-g pathname 当由pathname指定文件或目录存在并且设置了SGID位时返回为真
-h file 当file存在并且是符号连接文件时候返回真,该选项在一些老系统中无效
-k pathname 当由pathname指定的文件或目录存在并且设置了“粘滞”位sticky时返回真
-p file 当file存在并且是命名管道的时候返回真
-r pathname 当由pathname指定的文件或目录存在并且可读时返回真
-s file 当file存在并且大小大于0时返回真
-u pathname 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w pathname 当由pathname指定的文件或目录存在并且可写时返回真
-x pathname 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了他的内容被访问必然是可执行的
-O pathname 当由pathname指定的文件或目录存在并且被当前进程的有效用户ID所指定的用户拥有时返回真(可以理解为这个文件或目录存在而且属于当前用户文件)
-G pathcname 当由pathname指定的文件或目录存在并且被当前进程的有效用户组ID所指定的用户拥有时返回真(可以理解为这个文件或目录存在而且属于当前用户所属组文件)
 
下面是一个脚本的实例:

#!/bin/bash
if [ -d /root/shell ];
then
touch /root/shell/out.txt
echo "test">>out.txt
else
echo "nothing is anything!"
fi

if [ -f /root/shell/out.txt ]
then
echo "out.txt is there">>out.txt
fi

PATHNAME=/root/shell/if.sh
if [ -u $PATHNAME ]
then
echo "$PATHNAME is has a root UID"
else
echo "$PATHNAME is has not a root UID"
fi

if [ -g $PATHNAME ]
then
echo "$PATHNAME is has a root GID"
else
echo "$PATHNAME is has not a root GID"
fi

if [ -g $PATHNAME -a -u $PATHNAME ]
then
echo "$PATHNAME is has a root GID and UID"
else
echo "$PATHNAME is has not a root GID or UID"
fi

if [ -g $PATHNAME -o -u $PATHNAME ]
then
echo "$PATHNAME is has a root GID or UID"
else
echo "$PATHNAME are has not a root GID or UID"
fi

if [ -z $PS3 ]
then
echo "PS3 is null"
else
echo "PS3 is $PS3"
fi

if [ -O $PATHNAME ]
then
echo "the owner is root"
else
echo "the FILE owner is not root"
fi

阅读(1181) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~