在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脚本编程中使用关系运算符有所帮助!