• RHCE---shell 条件测试



    前言

    当我们完成某一命令的编写时,除了观察输出的内容,我们又如何得知命令是否执行成功呢?

    这里,我们需要用到条件测试


    一.条件测试

    概述:

    条件测试是在Shell脚本中非常重要的一部分,它们用于测试脚本中的变量或表达式是否成立。

    分类:

    • test:条件测试的标准命令。例如,使用test命令测试一个变量的值是否等于某个值。

    • [ ]:方括号(中括号)是test的另一种形式,它们被称为test的别名。例如,[ $var -eq 10 ] 表示测试变量 $var 是否等于10。

    • [[ ]]:双方括号是Bash Shell的重要特性,比test和[ ]更强大,可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于[ ]

    • (( )):该操作符用于算术运算测试。可使用数学符号> < = 不需要使用参数 例如,使用(( num > 10 )) 测试变量 $num 是否大于10。

    语法格式:

    • 格式1: test  -参数 条件表达式
    • 格式2: [ 条件表达式 ]     # 注意:[]的左右要有 空格  
    • 格式3: [[ 条件表达式 ]]   # 注意:[]的左右要有 空格
    • 格式4: ((条件表达式))    #注意:不需要左右有 空格

    结果测试:

    • test单独使用,判断条件为真,echo $? 真返回0,假返回1 

     案例 1

    1. #执行成功
    2. [root@server ~]# test -f /etc/passwd
    3. [root@server ~]# echo $?
    4. 0
    5. #执行失败
    6. [root@server ~]# test -f /etc/aa
    7. [root@server ~]# echo $?
    8. 1
    9. [root@server ~]# test -f /etc/passwd && echo 1 || echo 0
    10. 1
    11. [root@server ~]# [-f /etc/passwd]   # 注意:[] 中要有空格
    12. bash: [-f: command not found...

     文件测试 

    格式:如上 

    参数: 

    • -f:测试是否为普通文件
    • -d:测试是否是目录
    • -e:检测文件是否存在 存在返回true
    • -s:测试文件是否为空,文件为空返回true
    • -r:存在且可读
    • -w:存在且可写
    • -x:存在且可执行

    案列 1: 

    1. [root@server ~]# [ -d /root ] && echo y || echo n
    2. y

    案例 2:编写脚本测试文件是否存在

    1. [root@server ~]# vim temp1.sh
    2. #!/bin/bash
    3. FILE=$1 #$1代表位置变量,此处以及下面一行改为read -p "请输入文件名: " FILE
    4. echo FILE
    5. if test -e $FILE
    6. then
    7.        echo  "$FILE文件已存在"
    8. else    
    9.        echo  "$FILE文件不存在,开始新建..."
    10.        touch  $FILE
    11.        ls  -l $FILE
    12. fi
    13. [root@server ~]# bash temp1.sh /etc/passwd #位置变量$1代表/etc/passwd
    14. /etc/passwd
    15. /etc/passwd文件已存在

    整数测试:

    作用:

    • 用于比较两个数值的大小关系,操作的对象是数值 

     案例:

    1. [root@server ~]# [ 5 -gt 3 ] && echo y || echo n  
    2. y
    3. n

     拓展知识:

    1. # 检查左侧内容是否包含右侧的表达式,可以使用 =~ 正则
    2. 匹配,表示是否包含
    3. [root@server ~]# n=123
    4. [root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
    5. y
    6. [root@server ~]# n=123ttt
    7. [root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
    8. n


    总结

  • 相关阅读:
    java入门 数组
    【1567.乘积为正数的最长子数组长度】
    【仿真动画】双机器人协作完成一个任务(切割)
    Redis下载和安装(Windows系统)
    ch3_6多线程举例
    手把手教你用Yolov5 (v6.2) 训练分类模型 基于《Kaggle猫狗大战》案例
    高新技术企业认定标准是什么?
    linux串口设备配置方法(固定ID)
    鸿蒙状态栏设置
    Azure Functions Service Bus Trigger 对容器的支持
  • 原文地址:https://blog.csdn.net/zhoutong2323/article/details/134018750