• Shell 脚本编程(二) —— 条件判断 (test命令) + 多路分支语句(if 、case)


    test 命令可以用于判断文件类型以及值的比较,test 判断条件为真,返回 0;条件为假,返回 1。


            目录

    一、条件判断

    (1) 整数判断

    (2) 字符串判断

    (3) 文件判断

    二、if 语句

    1、语法结构

    2、实际运用

    三、case语句


    一、条件判断

    (1) 整数判断

    整数判断用到的运算符如下:

    运算符含义
    -eq等于(equal)
    -gt大于(greater than)
    -lt小于(less than)
    -ge大于等于(greater equal)
    -le小于等于(less equal)
    -ne不等于(not equal)
    1. # 如果一行有多个命令,命令行通过 ‘;’ 来判断一个命令是否结束
    2. # $? 表示上一条命令的执行结果命令行使用 ; 来分隔不同的命令
    3. # test 1 -eq 1 的执行结果为真,返回 0,因此 $? 拿到的值就是 0
    4. [gzx@VM-16-2-centos ~]$ test 1 -eq 1;echo $?
    5. 0
    6. [gzx@VM-16-2-centos ~]$ test 1 -eq -1;echo $?
    7. 1
    8. [gzx@VM-16-2-centos ~]$ test 1 -gt -1;echo $?
    9. 0

    (2) 字符串判断

    字符串判断用到的运算符如下:

    运算符含义
    ==等于
    !=不等于
    -n检查字符串长度是否大于0
    -z检查字符串长度是否等于0
    1. #注意:字符串和运算符之间必须要有空格隔开
    2. [gzx@VM-16-2-centos ~]$ test $USER == 'root';echo $?
    3. 0
    4. [gzx@VM-16-2-centos ~]$ test $USER == 'roat';echo $?
    5. 1

    (3) 文件判断

    test命令除了可以做值的比较外,还可以检测文件类型

    选项含义
    -d name    测试name 是否为一个目录
    -e name    测试一个文件是否存在
    -f name测试name 是否为普通文件
    -L name    测试name 是否为符号链接
    -r name    测试name 文件是否存在且为可读
    -w name    测试name 文件是否存在且为可写
    -x name    测试name 文件是否存在且为可执行
    -s name    测试name 文件是否存在且其长度不为0
    f1 -nt f2  测试文件f1 是否比文件f2 更新
    f1 -ot f2  测试文件f1 是否比文件f2 更旧
    1. [gzx@VM-16-2-centos ~]$ test -f file.txt;echo $?
    2. 0
    3. [gzx@VM-16-2-centos ~]$ test -d file.txt ;echo $?
    4. 1

    二、if 语句

    1、语法结构

    1. if 表达式1; then
    2. 执行语句1;
    3. 执行语句2;
    4. else
    5. 执行语句3
    6. fi

    2、实际运用

    可以使用方括号代替 test 命令,但是首尾至少要有一个空格

    1. # 命令行输入
    2. [gzx@VM-16-2-centos ~]$ ./variable.sh file.txt
    3. ################# 写法一 #################
    4. # variable.sh
    5. if test -d $1;then
    6. echo "File $1 exists";
    7. else
    8. echo "File $1 not exists";
    9. fi
    10. ################# 写法二 #################
    11. if [ -d $1 ];then
    12. echo "File $1 exists";
    13. else
    14. echo "File $1 not exists";
    15. fi

    三、case语句

    1. case 字符串变量 in
    2. 模式1)
    3. 执行语句1
    4. ;;
    5. 模式2)
    6. 执行语句2
    7. ;; #双分号结束(类似于C的break)
    8. *) # * 表示其他模式(类似于C的default)
    9. 执行语句3
    10. ;;
    11. esac
  • 相关阅读:
    ADB移动端入门
    如何禁止员工安装软件|公司电脑如何限制安装软件
    Spring Boot 中使用 tkMapper
    redis的知识
    [终端_1]-Xshell 5 最火的终端软件!
    asp.net乒乓球场地管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    firefly-rk3399开发板100天之第1天 编译android代码,给开发板下载固件
    小程序自学教程
    【STL】自定义string类
    CHS寻址
  • 原文地址:https://blog.csdn.net/challenglistic/article/details/127892377