• shell脚本之if语句


    一、前言

    结构化编程中,主要有三种结构:顺序、分支、循环。由此可见分支判断的重要性。

    而且在shell编程中往往会遇到进行判断的情况,比如:判断文件是否存在、目录是否存在等等。

    二、if语句的结构

    if [ 条件 ];
    then
        ...
    elif [ 条件 ];
    then ...
    else ... fi

    三、shell中的分支判断

    shell中的判断有以下几种:

    1.字符串判断

    str1 = str2 当两个串有相同内容时为真
    str1 != str2 当两个串内容不同时为真
    -n str1 当串的长度大于0时为真
    -z str1 当串的长度为0是为真
    str1 当串为非空时为真

    2.数字判断

    n1 -eq n2 两数相等为真
    n1 -ne n2 两数不等为真
    n1 -gt n2 n1大于n2为真
    n1 -ge n2 n1大于等于n2为真
    n1 -lt n2 n1小于n2为真
    n1 -le n2 n1小于等于n2为真

    3.文件判断

    -r file 文件可读为真
    -w file 文件可写为真
    -x file 文件可执行为真
    -f file 文件为普通文件为真
    -d file 文件为目录文件为真
    -c file 文件为字符特殊文件为真
    -b file 文件为块特殊文件为真
    -s file 文件为链接文件为真
    -t file 当文件描述符指定的设备为终端时为真

    4.组合

    -a 与
    -o 或
    !  非

    5.注意

    今天写了个脚本,运行的时候一直出错:

    if [[ $1 = 'DEBUG' ]]; then
        CMD="make clean;make COMFLAG='-D__LINUX__ ' DEBUGFLAG='-g'"
    elif [[ $1 = 'RELEASE' ]]; then
        CMD="make clean;make COMFLAG='-D__LINUX__ '"
    else
        echo "Error parameter!"
        exit
    fi

    当条件处使用的是: if [ $1 = 'DEBUG' ] 时,不加参数直接运行总是报错:unary operator expected

    原因是当没有参数时,该行变为: if [ = 'DEBUG' ] 那么按照语法来说,'['和'DEBUG'是肯定不相等的,这样前面就少了一个'[',所以报错了。

  • 相关阅读:
    unicode字符集
    534,rgba()和opacity的透明效果有什么不同?
    1004,js中的fliter
    1003,js array map()方法
    JavaScript 数据类型和数据结构
    JavaScript实现浮点数运算问题
    Chrome浏览器不能正确加载更新后JavaScript和Css文件原因及解决方法
    MySQL安装版与压缩版安装方法
    VUE列表渲染 FOR-IN和FOR-OF的区别
    for、for-in、for-of、forEach的区别
  • 原文地址:https://www.cnblogs.com/lit10050528/p/4748742.html
Copyright © 2020-2023  润新知