• 总结:shell中的if条件判断


    一、if 的基本语法

    1. if [ command ];then
    2. xxx
    3. elif [ command ];then
    4. xxx
    5. else
    6. xxx
    7. fi

     二、常见的一些写法案例

    1、if [ "x${var}" = "x" ]

    其实就是判断${var}是否为空的意思

    2、if [ X"$?" == X"0" ]

    其实就是判断$?是否为0,即判断执行结果是否正确

    3、 if [ ! -x "$PRGDIR"/ "$EXECUTABLE" ]; then  #!是非条件,即非(-x "$PRGDIR"/ "$EXECUTABLE")是否为真。总体含义是 判断脚本catalina.sh是否存在并有可执行权限,没有执行权限就退出。

    4、[ -z "$CATALINA_HOME" ]: -z   在中括号中判断字符串变量的值是否为空,为空则为真。

    5、-d filename:如果 filename为目录,则为真,作用比如判断目录是否存在

    如下,判断run_dir目录是否存在:

    三、文件和目录的判断

    1. ------------------------- 常用的-----------------------------------------------
    2. [ -e file ] 如果 file 存在,则为真。
    3. [ -d DIR ] 如果 file 存在且是一个目录,则为真。
    4. [ -f file ] 如果 file 存在且是一个普通文件,则为真。
    5. [ -r file ] 如果 file 存在且是可读的,则为真。
    6. [ -w file ] 如果 file 存在且是可写的,则为真。
    7. [ -x file ] 如果 file 存在且是可执行的,则为真。
    8. [ -s file ] 如果 file 存在且大小不为0,则为真。
    9. [ -L file ] 如果 file 存在且是一个符号连接,则为真。
    10. [ -h file ] 如果 file 存在且文件是软链接,则为真。
    11. [ file1 -ot file2 ] 如果 file1 比 file2 要老, 或者 file2 存在且 file1 不存在,则为真。
    12. [ file1 -nt file2 ] 如果 file1 比 file2 要新,则为真。
    13. ------------------------- 以下不太常用 --------------------------------------------
    14. [ -b file ] 如果 file 存在且是一个块特殊文件,则为真。
    15. [ -c file ] 如果 file 存在且是一个字特殊文件,则为真。
    16. [ -g file ] 如果 file 存在且已经设置了SGID,则为真。
    17. [ -k file ] 如果 file 存在且已经设置了粘制位,则为真。
    18. [ -p file ] 如果 file 存在且是一个名字管道(F如果O),则为真。
    19. [ -t FD ] 如果文件描述符 FD 打开且指向一个终端,则为真。
    20. [ -u file ] 如果 file 存在且设置了SUID (set user ID),则为真。
    21. [ -O file ] 如果 file 存在且属有效用户ID,则为真。
    22. [ -G file ] 如果 file 存在且属有效用户组,则为真。
    23. [ -N file ] 如果 file 存在 and has been mod,如果ied since it was last read则为真。
    24. [ -S file ] 如果 file 存在且是一个套接字,则为真。
    25. [ file1 -ef file2 ] 如果 file1 和 file2 指向相同的设备和节点号,则为真。

    四、字符串的判断

    字符串批较时,变量一定要用 双引号。

    1. [ -z "str" ] 如果str的长度为零,则为真 ,即判断是否为空,空即是真;
    2. [ -n "str" ] 如果str的长度非零,则为真 ,即判断是否为非空,非空即是真;
    3. [ "str1" = "str2" ] 如果两个字符串相同,则为真;
    4. [ "str1" != "str2" ] 如果字符串不相同,则为真;
    5. [ "str1" ]  如果字符串不为空,则为真,与-n类似。

    案例:

    1. if [ -z "$path" ]; then
    2. echo "path不能为空,请指定path"
    3. fi
    4. if [ "$opt" != "-" ]&&[ "$opt" != "+" ]; then
    5. echo "opt只能取值-或+" 1>&2
    6. exit 1;
    7. fi

    五、数值比较

    数值的比较千万不要使用大于号、小于号,数值的比较只能使用 -eq 、-gt 等。

    1. [ num1 -eq num2 ] num1 和 num2 两数相等为真 , =
    2. [ num1 -ne num2 ] num1 和 num2 两数不等为真 ,!=
    3. [ num1 -gt num2 ] num1 大于 num1 为真 , >
    4. [ num1 -ge num2 ] num1 大于等于num2 为真, >=
    5. [ num1 -lt num2 ] num1 小于n um2 为真 , <
    6. [ num1 -le num2 ] num1 小于等于 num2 为真, <=

    案例:

    1. if [ ${num1} -gt ${num2} ]; then
    2. echo "[相对目录]的长度应该小于[文件路径]的长度"
    3. exit 1
    4. fi

    注:本文引用的是:shell 语言中的 if 条件判断_猎人在吃肉的博客-CSDN博客_shellif判断

  • 相关阅读:
    算法刷题——二叉树部分操作(翻转二叉树,平衡二叉树,最大深度)
    【Golang】Gin处理GET、POST请求
    【笔记】大话设计模式14-观察者模式
    机器学习(八):决策树
    38.【C++ 虚函数 纯虚函数 虚基类 (最全详解)】
    uview的真机演示,微信小程序,当两个input框的时候,从一个input切换到两一个input的时候,键盘调不起来
    React中使用SWR处理数据请求
    C#数组简单介绍
    【Vue】开发实现 Vue 中的自定义指令(2)
    Spring读书笔记——bean创建(上)
  • 原文地址:https://blog.csdn.net/w2009211777/article/details/125450061