跳转至

shell的条件测试

概述

条件测试是 shell 编程中非常重要的一个概念,它允许我们根据某个条件是否满足,来选择执行相应的任务。

条件测试的语法

shell 中的条件测试语法如下:

Text Only
[ 条件表达式 ]

如果条件表达式为真,则返回 0,表示测试成功;如果条件表达式为假,则返回非 0 值,表示测试失败。

条件表达式

条件表达式可以是任何可以表示真值或假值的表达式,包括字符串比较、算术比较、文件测试、逻辑运算等。

字符串比较

字符串比较可以使用以下操作符:

操作符 含义
-z str str 为空时,返回真
-n str str 不为空时,返回真
str1 = str2 str1 等于 str2 时,返回真
str1 != str2 str1 不等于 str2 时,返回真

算术比较

算术比较可以使用以下操作符:

操作符 含义
-eq 等于
-ne 不等于
-gt 大于
-ge 大于或等于
-lt 小于
-le 小于或等于

文件测试

文件测试可以使用以下操作符:

操作符 含义
-f file file 存在且是一个普通文件时,返回真
-d file file 存在且是一个目录时,返回真
-e file file 存在时,返回真
-s file file 存在且大小大于 0 时,返回真
-r file file 存在且可读时,返回真
-w file file 存在且可写时,返回真
-x file file 存在且可执行时,返回真

逻辑运算

逻辑运算可以使用以下操作符:

操作符 含义
&& 逻辑与,都为真时,返回真
\ \
! 逻辑非

扩展知识

  • 条件测试的返回值可以被用作变量的值,或者作为判断语句的条件。
  • 条件测试可以嵌套使用,以实现更复杂的逻辑判断。
  • 条件测试可以与 case 选择语句配合使用,以实现更灵活的条件判断。

实验示例

以下是一些使用条件测试的实验示例:

判断变量是否为空

Text Only
#!/bin/bash

name="Josh"

if [ -z "$name" ]; then
    echo "变量为空"
else
    echo "变量不为空"
fi

运行该脚本,将输出以下结果:

Text Only
变量不为空

判断文件是否存在

Text Only
#!/bin/bash

file="/etc/passwd"

if [ -e "$file" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

运行该脚本,将输出以下结果:

Text Only
文件存在

判断字符串是否相等

Text Only
#!/bin/bash

str1="hello"
str2="world"

if [ "$str1" == "$str2" ]; then
    echo "字符串相等"
else
    echo "字符串不相等"
fi

运行该脚本,将输出以下结果:

Text Only
字符串不相等

总结

条件测试是 shell 编程中非常重要的一个概念,它可以帮助我们实现复杂的逻辑判断。