Unix / Linux - Shell 关系运算符
-
简述
shell 支持以下特定于数值的关系运算符。这些运算符不适用于字符串值,除非它们的值是数字。假设变量 a 持有 10 和变量 b 持有 20 然后 -操作符 描述 例子 -eq 检查两个操作数的值是否相等;如果是,则条件变为真。 [ $a -eq $b ] 不正确。 -ne 检查两个操作数的值是否相等;如果值不相等,则条件为真。 [ $a -ne $b ] 是真的。 -gt 检查左操作数的值是否大于右操作数的值;如果是,则条件变为真。 [ $a -gt $b ] 不正确。 -lt 检查左操作数的值是否小于右操作数的值;如果是,则条件变为真。 [ $a -lt $b ] 是真的。 -ge 检查左操作数的值是否大于或等于右操作数的值;如果是,则条件变为真。 [ $a -ge $b ] 不正确。 -le 检查左操作数的值是否小于或等于右操作数的值;如果是,则条件变为真。 [ $a -le $b ] 是真的。 理解所有条件表达式都应该放在方括号内并在它们周围有空格是非常重要的。例如,[ $a <= $b ] 是正确的,而 [$a <= $b] 是不正确的。 -
例子
这是一个使用所有关系运算符的示例 -#!/bin/sh a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a is equal to b" else echo "$a -eq $b: a is not equal to b" fi if [ $a -ne $b ] then echo "$a -ne $b: a is not equal to b" else echo "$a -ne $b : a is equal to b" fi if [ $a -gt $b ] then echo "$a -gt $b: a is greater than b" else echo "$a -gt $b: a is not greater than b" fi if [ $a -lt $b ] then echo "$a -lt $b: a is less than b" else echo "$a -lt $b: a is not less than b" fi if [ $a -ge $b ] then echo "$a -ge $b: a is greater or equal to b" else echo "$a -ge $b: a is not greater or equal to b" fi if [ $a -le $b ] then echo "$a -le $b: a is less or equal to b" else echo "$a -le $b: a is not less or equal to b" fi
上面的脚本将生成以下结果 -10 -eq 20: a is not equal to b 10 -ne 20: a is not equal to b 10 -gt 20: a is not greater than b 10 -lt 20: a is less than b 10 -ge 20: a is not greater or equal to b 10 -le 20: a is less or equal to b
使用关系运算符时需要考虑以下几点 --
运算符和表达式之间必须有空格。例如,2+2 不正确;它应该写为 2 + 2。
-
if...then...else...fi 声明是一个决策声明,在下一章中已经解释过。
-