Shell编程之条件语句

    技术2025-12-31  3

    条件测试

    Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0时表示成功,否则(非0值)表示失败或异常。 使用专门的测试工具—test命令,可以对条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立) 使用test测试命令时,包括以下两种形式。

    test 【测试选项】 条件表达式

    或者

    [ 【测试选项】 条件表达式 ]

    这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程习惯。需要注意的是,方括号 “[ ]”与条件表达式之间需要至少需要一个空格进行分隔。 根据需要测试的条件类别不同,条件表达式也不同。比较常用的条件操作包括文件测试、整数值比较、字符串比较,以及针对多个条件的逻辑测试。

    1.文件测试

    -d:测试是否为目录-e:测试目录或文件是否存在-f:是否为文件-r:测试当前用户是否有权限读取-w:测试当前用户是否有权限写入-x:测试是否设置有可执行权限-nt:判断文件A是否比文件B新。-ot:判断文件A是否比文件B旧。-ef:判断两个文件是否为同一个文件,用来判断两个文件是否指向同一个inode。

    2.整数值比较

    -eq:第一个数等于第二个数-ne:第一个数不等于第二个数-gt:第一个数大于第二个数-lt:第一个数小于第二个数-le:第一个数小于或等于第二个数-ge:第一个数大于或等于第二个数

    3.字符串比较

    ==:第一个字符串与第二个字符串相同!=:第一个字符串与第二个字符串不相同-z:检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串

    4.逻辑测试

    逻辑测试指的是判断两个或多个条件之间的依赖关系。当系统任务取决于多个不同的条件时,判断是根据这些条件同时成立还是只要有其中一个成立等情况,需要有一个测试的过程。常用的逻辑测试操作如下👇,使用时放在不同的测试语句或命令之间。

    &&:逻辑与,表示“并且”,只有前后两个条件都成立时,整个测试命令的返回值才为0(结果成立)。使用test命令测试时,可改用test -a||:逻辑或,表示“或者”,只要前后两个条件中有一个成立,整个测试命令的返回值及为0(结果成立)。使用test命令测试时,可改用test -o!:逻辑否,表示“不”,只有当指定的条件不成立时,整个测试命令的返回值才为0(结果成立)

    if语句

    1.单分支的if语句

    if 条件测试操作 //如果条件成立 then //则 命令序列 fi //结束判断

    2.双分支语句

    if 条件测试 //如果条件成立 then 命令序列1 else //否则 命令序列2 fi //结束判断

    3.多分支语句

    if 条件测试1 //如果条件成立 then //则 命令序列1 elif 条件测试2 //或如果 then //则 命令序列2 else //否则 命令序列3 fi //结束判断
    Processed: 0.009, SQL: 10