赞
踩
if 条件; then
command1
else
command2
fi
严格规定:
i=1 # =用作赋值时,两边绝对不能有空格
if [ $a = $b ] # =、==等用作比较判断时,两边必须有空格;中括号前后一定要加空格。
if条件中:(())、[]、[[]],区别如下:
(1)(())只能用于整数比较,不能用于字符串比较,括号中的变量可以省略$符号前缀。
(2)[]和[[]]的区别:
比较字符串只能使用=、==、<、>、!=、-z、-n。其中,-n表示字符串不为空,即长度大于0,-z表示字符串为空,即长度为0。
备注:
对比数字,只能使用==、=、!=,或者 -eq、-ne、-gt、-ge、-lt、-le。其中-eq的意思是 equal,-ne是 unequal,-gt是 greater than,-ge是 greater than or equal to,-lt是 less than,-le是 less than or equal to。
备注:
=与==的区别(字符串和数字均适用):
1、在 [ ] 或 [[]] 中,= 与 == 表示判断,是等价的
2、在·(( )) 中, = 表示赋值, == 表示判断,它们不等价
and可以用-a 或 &&表示,or可以用-o或||表示。它们在[]和[[]]是不同的:
-o。&&
||写在括号里或外都可以。-o。但&&
||必须在括号外,-a``-o必须在括号内。比如a=3 ; b=2 ; c=4,要判断是否a>b且a<c,有以下几种正确的写法:
if (( a > b )) && (( a < c )) # 正确
if (( a > b && a < c )) # 正确
if [[ $a -gt $b ]] && [[ $a -lt $c ]] # 正确
if [[ $a -gt $b && $a -lt $c ]] # 正确
if [ $a -gt $b ] && [ $a -lt $c ] # 正确
if [ $a -gt $b -a $a -lt $c ] # 正确
判断文件夹或文件是否存在
#文件夹不存在则创建,文件夹存在则删除
if [ ! -d "/data/" ]; then
mkdir /data
else
rm -rf /data
fi
#文件存在则删除
if [ ! -f "/data/filename" ]; then
echo "文件不存在"
else
rm -f /data/filename
fi
注:本文由博主搜集整理而来,不用于任何商业用途,如有侵权,请联系博主删帖!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。