if控制语句
if基本语句
if else基本语句格式如下:
if condition
then
do1
else
do2
fi
if else if else语句基本格式如下:
if condition1
then
do1
elif condition2
then
do2
fi
if 语句若写为一行时,可表示为: if condition; then do1; else do2; fi
if控制用法
- 字符串变量表达式
if [ str1 = str2 ] #当两个串有相同内容、长度时为真
if [ str1 != str2 ] #当串str1和str2不等时为真
if [ -n str1 ] #当串的长度大于0时为真(串非空)
if [ -z str1 ] #当串的长度为0时为真(空串)
if [ str1 ] #当串str1为非空时为真
shell中利用-n来判断字符串的非空
错误用法:
ARGS=$*
if [ -n $ARGS ]
then
print "with argument"
fi
print " without argument"
不管传不传参数,总会进入if里面。
原因:因为不加“”时该if语句等效于if [ -n ],shell 会把它当成if [ str1 ]来处理,-n自然不为空,所以为正。
正确用法:需要在ARGS上加入双引号,即"ARGS上加入双引号,即"ARGS上加入双引号,即"ARGS".
ARGS=$*
if [ -n "$ARGS" ]
then
print "with argument"
fi
print " without argument"
- 文件表达式
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真。
filename1 -ot filename2 如果 filename1比 filename2旧,则为真。
- 整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
- 逻辑非 ! 条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ] 如果不存在目录$num
- 逻辑与 –a 条件表达式的并列
if [ 表达式1 –a 表达式2 ]
- 逻辑或 -o 条件表达式的或
if [ 表达式1 –o 表达式2 ]
本文详细介绍了Shell脚本中if控制语句的使用,包括基本的if-else结构、if-elif-else复杂条件判断以及单行if语句的语法。特别强调了在判断字符串非空时的正确用法,需要使用双引号避免误判。同时,列举了文件表达式和整数变量表达式的判断条件,如文件是否存在、文件类型检查、文件权限判断以及整数比较操作。此外,还提到了逻辑非、逻辑与和逻辑或在条件表达式中的应用。
721

被折叠的 条评论
为什么被折叠?



