全部博文(1493)
分类:
2012-06-04 11:18:40
原文地址:shell程序设计语法之条件(2) 作者:无赖皮肤
2:条件
所有的程序涉设计语言的基础是对条件进行测试判断,并根据测试结果采取不同行动的能力。在实际工作中,大多数脚本程序都会广泛的使用shell的布尔判断命令[或者test。把[作为命令很奇怪,但是它会使得命令的语法看起来更简单,更明确。
下面的例子测试是否存在fred.c
if test -f fred.c
then
....
fi
if [ -f fred.c ]
then
.....
fi
这两种方式都是正确的,注意[]必须都要用空格和其它字符隔开,否则会出错。
[或test命令可以使用的条件类型归位三类:字符串比较,算术比较和与文件有关的条件测试
。
字符串比较有三种:
=(相等) ,
!=(不相等),
-n(字符串不为空则结果为真),
-z(字符专为空结果为真).
算术比较有七种:
-eq(相等则为真),
-ne(不等为真),
-gt(大于为真),
-ge(大于等于为真),
-lt(小于为真),
le(小于等于为真),
!(表达式为假结果为真)
文件条件测试有九种:
-d file (文件为目录为真),
-f(e) file (文件存在则为真)
-g file (文件SGID位被设置为真)
-u file (文件SUID位被设置为真)
-r file (文件可读为真)
-w file (文件可写为真)
-x file (文件可执行为真)
-s file (文件长度不为0为真)
与文件测试有关的条件测试结果为真的前提是文件必须存在。
实例:
#!/bin/sh
if [ -f /bin/bash ];then
echo "file /bin/bash exits"
fi
if [ -d /bin/bash ];then
echo "/bin/bash is a directory"
else
echo "/bin/bash is not a directory"
fi
执行结果:
lishuo@lishuo-Rev-1-0:~/桌面$ ./t
file /bin/bash exits
/bin/bash is not a directory
这些内容是我平时阅读的笔记,源自《linux程序设计第三版》,详细内容请看原书