在Linux Shell脚本中,关系运算符用于比较两个值或变量之间的关系。以下是主要的Shell关系运算符及其使用方法:
这些运算符用于比较数值:
| 运算符 | 描述 | 示例 |
|---|---|---|
| -eq | 等于 | [ $a -eq $b ] |
| -ne | 不等于 | [ $a -ne $b ] |
| -gt | 大于 | [ $a -gt $b ] |
| -lt | 小于 | [ $a -lt $b ] |
| -ge | 大于或等于 | [ $a -ge $b ] |
| -le | 小于或等于 | [ $a -le $b ] |
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
fi
这些运算符用于比较字符串:
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 等于 | [ "$a" = "$b" ] |
| != | 不等于 | [ "$a" != "$b" ] |
| -z | 长度为零 | [ -z "$a" ] |
| -n | 长度不为零 | [ -n "$a" ] |
| < | 按字典序小于 | [[ "$a" < "$b" ]] |
| > | 按字典序大于 | [[ "$a" > "$b" ]] |
#!/bin/bash
str1="abc"
str2="def"
if [ $str1 = $str2 ]
then
echo "$str1 = $str2 : str1 等于 str2"
else
echo "$str1 = $str2: str1 不等于 str2"
fi
if [[ $str1 < $str2 ]]
then
echo "$str1 < $str2 : str1 小于 str2"
fi
这些运算符用于测试文件属性:
| 运算符 | 描述 | 示例 |
|---|---|---|
| -e | 文件/目录存在 | [ -e $file ] |
| -f | 是普通文件 | [ -f $file ] |
| -d | 是目录 | [ -d $file ] |
| -r | 可读 | [ -r $file ] |
| -w | 可写 | [ -w $file ] |
| -x | 可执行 | [ -x $file ] |
| -s | 文件大小不为零 | [ -s $file ] |
| -L | 是符号链接 | [ -L $file ] |
#!/bin/bash
file="/var/log/syslog"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
if [ -f $file ]
then
echo "文件是普通文件"
fi
| 运算符 | 描述 | 示例 |
|---|---|---|
| ! | 非 | [ ! false ] |
| -o | 或 | [ $a -lt 20 -o $b -gt 100 ] |
| -a | 与 | [ $a -lt 20 -a $b -gt 100 ] |
[ ]测试结构中,运算符和操作数之间需要有空格[[ ]]结构中可以使用更强大的模式匹配和正则表达式(( ))结构可以用于算术比较,使用类似C语言的运算符(==, !=, >, <等)希望这些信息对您在Linux Shell脚本编程中使用关系运算符有所帮助!