Unix / Linux - Shell 字符串运算符

  • 简述

    Bourne Shell 支持 wing 字符串运算符。
    假设变量 a 保存“abc”和变量 b 持有“efg”然后 -
    操作符 描述 例子
    = 检查两个操作数的值是否相等;如果是,则条件变为真。 [ $a = $b ] is not true.
    != 检查两个操作数的值是否相等;如果值不相等,则条件变为真。 [ $a != $b ] is true.
    -z 检查给定的字符串操作数大小是否为零;如果长度为零,则返回 true。 [ -z $a ] is not true.
    -n 检查给定的字符串操作数大小是否非零;如果它是非零长度,则返回 true。 [ -n $a ] is not false.
    str 检查是否 str不是空字符串;如果为空,则返回false。 [ $a ] is 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&plus2 不正确。它应该写为 2 + 2。
    • if...then...else...fi 声明是一个决策声明,在下一章中已经解释过。