shell 条件结构之 if 语句使用总结

举报
小麦大叔 发表于 2021/12/30 00:01:57 2021/12/30
【摘要】 文章目录 #条件判断的格式 [ exp ] [[ exp ]] test exp 注意: exp 与 “[”、"]"括号之间必须要有空格,否则会报语法错误; [ e...

文章目录


#条件判断的格式
[ exp ]
[[ exp ]]
test exp

注意: exp 与 “[”、"]"括号之间必须要有空格,否则会报语法错误;

  1. [ exp ] 与 [[ exp ]]的区别,本文仅讨论[ exp ],而在[[ exp ]]模式下,额外支持指令,但是同样都需要空格;
  2. &&、|| 分别作为逻辑与、逻辑或的运算
  3. [[ 1 == 1 ]] 结果为真

#条件判断的类型
条件判断的类型有三种:整数判断,字符判断,文件判断

条件逻辑表达式:
-a : and 逻辑与
-o : or 逻辑或
! : nor 逻辑非

##整数判断
-eq #equal 相等
-ne #not equal 不相等
-gt #greater than 大于
-lt #less than 小于
-ge #greater or equal 大于或等于
-le #less or equal 小于或等于

##字符判断
-z #zero 当前字符串是否为空
-n #not zero 当前字符串是否不为空
== 两端字符串是否相等
!= 两端字符串是否不相等
> 长度是否大于
< 长度是否小于

注意:“< ”与 “> ”做字符串比较的时候,在[ exp ] 情况下需要需要输入 “<” 或者 “>” 作为转义,或者使用 [[ > exp ]] 模式可以直接使用“< ”与 “> ”作为判断符号使用。


STR1="HELLO"
STR2="HELL"

if [[ $STR1 > $STR2 ]];then
        echo "$STR1 > $STR2"
fi

if [ $STR1 \> $STR2 ];then
        echo "$STR1 > $STR2"
fi        

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

##文件判断
-e #exit 判断文件是否存在
-f #if file 判断是否是文件
-d #dir 判断是否是路径
-r 判断文件是否可读
-w 判断文件是否可写
-x 判断文件是否可执行
-L 判断文件是否为符号链接

#!/bin/bash
MFILE=123.sh

if [ -f $MFILE -a -x $MFILE ];then
        echo "$MFILE is ok"
fi

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
if [[ -f $MFILE && -x $MFILE ]];then
        echo "$MFILE is ok"
fi

  
 
  • 1
  • 2
  • 3

##条件判断基本结构

if conditions;then
statement1
.......
fi


if conditions;then
statement1
else
statement2
fi


if condition1; then
statement1
elif condition2 ; then
statement2
fi

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

#总结

条件判断主要有三种格式 test exp,[ exp ],[[ exp ]],其中前二者类似,本文主要讲了 [ exp ];exp 作为条件判断的表达式主要分为三类:

  • 数值比较的判断;
  • 文件类型的判断,包括文件类型,路径类型,读写执行属性等;
  • 字符串的比较;
  • exp 中比较重要的是运算符,通用运算符是逻辑运算符包括 -a,-o,!,而对于特定类型的判断,每一种判断类型的运算符都是相对独立使用,无法相互兼容。

文章来源: great.blog.csdn.net,作者:小麦大叔,版权归原作者所有,如需转载,请联系作者。

原文链接:great.blog.csdn.net/article/details/81545509

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200