【linux】if 控制语句

本文详细介绍了Shell脚本中if控制语句的使用,包括基本的if-else结构、if-elif-else复杂条件判断以及单行if语句的语法。特别强调了在判断字符串非空时的正确用法,需要使用双引号避免误判。同时,列举了文件表达式和整数变量表达式的判断条件,如文件是否存在、文件类型检查、文件权限判断以及整数比较操作。此外,还提到了逻辑非、逻辑与和逻辑或在条件表达式中的应用。
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控制用法
  1. 字符串变量表达式
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"
  1. 文件表达式
-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旧,则为真。
  1. 整数变量表达式
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
  1. 逻辑非 ! 条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]               如果不存在目录$num
  1. 逻辑与 –a 条件表达式的并列
if [ 表达式1  –a  表达式2 ]
  1. 逻辑或 -o 条件表达式的或
if [ 表达式1  –o 表达式2 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值