高级Bash编程指南__第二部分__基本__7.0条件判断

7.0 条件判断
1.0 判断结构
1.0 使用[[ ... ]]结构:
if [[ -e $file ]]
then
echo "..."
fi

使用[[ ... ]] 条件判断结构,而不是[ ... ] 能够防止脚本中的许多逻辑错误。比如 &&, ||, <, 和 > 操作能够正常存在于[[ ]] 中,但如果存在于[ ],则会报错。

2.0 其他结构
if cd "$dir" 2>/dev/null;then
echo "Now in $dir"
else
echo "Can't change to $dir"
fi

3.0 列表结构
var1=2
var2=22
[ "var1" -ne "$var2" ] && echo "$var1 is not equal $var2"

home=/home/bozo
[ -d "$home" ] || echo "$home directory does not exist"

4.0 test结构
if test -z "$1"
then
echo "No command-line arguments"
else
echo "First command-line argument is $1."

fi

5.0 (())结构
(())结构扩展并计算一个算术表达式的值。如果表达式的结果为0,那么返回的退出码为1,或者是"假".而一个非零值的表达式所返回的退出状态码将为0,或者是"true".这种情况和先前讨论的test命令和[]结构的行为正好相反
[root@cy-cloud02 exercise]# ((0))
[root@cy-cloud02 exercise]# echo $?
1      #当表达式结果为0的时候返回的状态码1,即假
[root@cy-cloud02 exercise]# (( 5 > 9 ))
[root@cy-cloud02 exercise]# echo $?
1
[root@cy-cloud02 exercise]# (( 5 < 9 ))
[root@cy-cloud02 exercise]# echo $?
0
[root@cy-cloud02 exercise]#

2.0 文件测试操作符:
-e :文件存在
-a :文件存在,与-e相同,已被弃用,不建议使用
-f :表示这是一个一般文件(并不是目录或者设备文件)
-s :表示文件大小不为0
-d :表示这是一个目录
-b :表示这是一个块设备
-p :这个文件是一个管道
-h :这是一个符号链接
-L :这是一个符号链接
-S :表示这是一个socket
-t :文件被关联到一个终端设备上
-r :可读读权限
-w :可写权限
-x :可执行权限
-g : set-group-id(sgid)标记被设置到文件或目录上
-u :set-user-id(suid)标记被设置到文件上
-k :设置粘贴位
-O :判断是否是文件的拥有者
-G :文件的group-id是否与你的相同
-N :从文件上一次被读取到现在为止,文件是否被修改过
f1 -nt f2 :文件f1比文件f2新
f1 -ot f2 :文件f1比文件f2旧
f1 -ef f2 :文件f1和文件f2是相同文件的硬链接
! : 非操作


3.0 比较操作符
二元比较操作符用来比较两个变量或数字。
-eq :等于  if [ "$a" -eq "$b" ]
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
< : 小于(在双括号中使用)    (("$a" < "$b"))
<= :
> :
>= :
= :
== :

if [[ "$a" < "$b" ]]
then
echo "..."
fi

注意:">" 使用在[] 结构中需要被转义  if [ "$a" \> "$b" ]

-z   :字符串为"null",意思是字符串长度为零
-n :字符串不为"null"

-a   :逻辑与
-o :逻辑或


&& 和 || 是在双中括号结构中使用的, -a 和 -o 一般是和test命令或者单中括号结构中一起使用的
[[ condition1 && condition2 ]]
if [ "$exp1" -a "$exp2" ]


注意:
常用的判断字符串的方法:
if [ "x$striing" != "x"] #"x"字符是可以相互抵消的,为了方法有些bash中 -n 判断的错误
then
echo "....."
fi












@dianxinguangchang.43F.zhongshanerlu.yuexiuqu.guangzhoushi.guangdongsheng

2016-10-18 18:32

猜你喜欢

转载自listen-raining.iteye.com/blog/2331417
今日推荐