返回

用Shell脚本编程之条件语句

闲谈

在shell脚本编程中,条件语句对于控制程序流程至关重要,它允许程序根据特定条件执行不同的操作。

1. test 测试命令

test命令是shell脚本编程中常用的条件语句,它可以测试各种条件,并根据条件的真假执行不同的操作。

test命令有两种形式:

  • test [操作符选项] 表达式
  • [ 操作符选项 表达式 ]

注意:在第二种形式中,[ ]内两边要有空格。

test命令支持多种操作符选项,常用的操作符选项有:

  • -e:测试指定的文件或者目录是否存在
  • -f:测试指定的文件是否存在且为常规文件
  • -d:测试指定的文件是否存在且为目录
  • -s:测试指定的文件是否存在且不为空
  • -r:测试指定的文件是否存在且可读
  • -w:测试指定的文件是否存在且可写
  • -x:测试指定的文件是否存在且可执行

例如,以下命令测试文件是否存在:

test -e /etc/passwd

如果文件存在,则命令返回真(0),否则返回假(1)。

2. 文件测试操作符

除了test命令之外,shell脚本编程还提供了多种文件测试操作符,这些操作符可以更方便地测试文件的状态。

常用的文件测试操作符有:

  • -a:与操作符,测试多个条件是否都为真
  • -o:或操作符,测试多个条件是否有一个为真
  • !:非操作符,测试一个条件是否为假

例如,以下命令测试文件是否存在且可读:

test -e /etc/passwd -a -r /etc/passwd

如果文件存在且可读,则命令返回真(0),否则返回假(1)。

3. 字符串比较

shell脚本编程支持字符串比较操作,常用的字符串比较操作符有:

  • =:相等操作符,测试两个字符串是否相等
  • !=:不等操作符,测试两个字符串是否不等
  • <:小于操作符,测试第一个字符串是否小于第二个字符串
  • :大于操作符,测试第一个字符串是否大于第二个字符串

  • -z:空字符串操作符,测试字符串是否为空
  • -n:非空字符串操作符,测试字符串是否非空

例如,以下命令测试两个字符串是否相等:

test "hello" = "hello"

如果两个字符串相等,则命令返回真(0),否则返回假(1)。

4. 整数比较

shell脚本编程支持整数比较操作,常用的整数比较操作符有:

  • -eq:相等操作符,测试两个整数是否相等
  • -ne:不等操作符,测试两个整数是否不等
  • -lt:小于操作符,测试第一个整数是否小于第二个整数
  • -gt:大于操作符,测试第一个整数是否大于第二个整数
  • -le:小于或等于操作符,测试第一个整数是否小于或等于第二个整数
  • -ge:大于或等于操作符,测试第一个整数是否大于或等于第二个整数

例如,以下命令测试两个整数是否相等:

test 1 -eq 1

如果两个整数相等,则命令返回真(0),否则返回假(1)。

5. 浮点比较

shell脚本编程支持浮点比较操作,常用的浮点比较操作符有:

  • -eq:相等操作符,测试两个浮点数是否相等
  • -ne:不等操作符,测试两个浮点数是否不等
  • -lt:小于操作符,测试第一个浮点数是否小于第二个浮点数
  • -gt:大于操作符,测试第一个浮点数是否大于第二个浮点数
  • -le:小于或等于操作符,测试第一个浮点数是否小于或等于第二个浮点数
  • -ge:大于或等于操作符,测试第一个浮点数是否大于或等于第二个浮点数

例如,以下命令测试两个浮点数是否相等:

test 1.0 -eq 1.0

如果两个浮点数相等,则命令返回真(0),否则返回假(1)。

6. 逻辑运算符

shell脚本编程支持逻辑运算符,常用的逻辑运算符有:

  • &&:与操作符,测试多个条件是否都为真
  • ||:或操作符,测试多个条件是否有一个为真
  • !:非操作符,测试一个条件是否为假

例如,以下命令测试两个条件是否都为真:

test -e /etc/passwd && test -r /etc/passwd

如果两个条件都为真,则命令返回真(0),否则返回假(1)。

7. 总结

条件语句是shell脚本编程中的重要组成部分,它允许程序根据特定条件执行不同的操作。shell脚本编程提供了多种条件语句,包括test命令、文件测试操作符、字符串比较、整数比较、浮点比较和逻辑运算符等。这些条件语句可以帮助程序员编写出更加灵活和强大的脚本程序。