Unix / Linux - Shell 字符串运算符示例

Bourne Shell 支持以下字符串运算符。

假设变量a 包含"abc",变量b 包含"efg",那么 −

运算符 说明 示例
= 检查两个操作数的值是否相等; 如果是,则条件变为真。 [ $a = $b 为 not true。
!= 检查两个操作数的值是否相等; 如果值不相等,则条件变为真。 [ $a != $b ] 为 true。
-z 检查给定的字符串操作数大小是否为零; 如果它的长度为零,则返回 true。 [ -z $a 为 not true。
-n 检查给定的字符串操作数大小是否非零; 如果它是非零长度,则返回 true。 [ -n $a ] 为 not false。
str 检查 str 是否为空字符串; 如果为空,则返回 false。 [ $a ] 为 not false。

示例

这是一个使用所有字符串运算符的示例 −

#!/bin/sh

a="abc"
b="efg"

if [ $a = $b ]
then
   echo "$a = $b : a is equal to b"
else
   echo "$a = $b: a is not equal to b"
fi

if [ $a != $b ]
then
   echo "$a != $b : a is not equal to b"
else
   echo "$a != $b: a is equal to b"
fi

if [ -z $a ]
then
   echo "-z $a : string length is zero"
else
   echo "-z $a : string length is not zero"
fi

if [ -n $a ]
then
   echo "-n $a : string length is not zero"
else
   echo "-n $a : string length is zero"
fi

if [ $a ]
then
   echo "$a : string is not empty"
else
   echo "$a : string is empty"
fi

上面的脚本会产生下面的结果 −

abc = efg: a is not equal to b
abc != efg : a is not equal to b
-z abc : string length is not zero
-n abc : string length is not zero
abc : string is not empty

使用运算符需要注意以下几点 −

  • 运算符和表达式之间必须有空格。 例如,2+2 是不正确的。 应该写成 2 + 2。

  • if...then...else...fi 语句是决策语句,已在下一章中解释。

unix_basic_operators.htm