AI智能
改变未来

Shell编程之条件语句


条件测试

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命令序列1else            //否则命令序列2fi              //结束判断

3.多分支语句

if 条件测试1      //如果条件成立then             //则命令序列1elif 条件测试2    //或如果then          	 //则命令序列2else             //否则命令序列3fi               //结束判断
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Shell编程之条件语句