务必在判断字符串时,给shell变量加上引号

    先我们来看看在shell中如何判断字符串为null

#!/bin/bash
a="a = b"
if [ $a ]
then
        echo true
else
        echo false
fi

if [ "$a" ]
then
        echo true
else
        echo false
fi

if [ -z $b ]
then
        echo true
else
        echo false
fi

if [ -z "$b" ]
then
        echo true
else
        echo false
fi

由上可以看出来判断字符串是否null,可以用-z  或者  直接 [ $a ] 来判断

但是我们要注意的是,给变量加上引号,这是一个好习惯, 比如 当a=“a = b”的时候,

if [ $a ]
then
        echo true
else
        echo false
fi

就会给出错误答案。


所以在给变量做test的时候,务必给变量加上引号。

扩展一下, -z 是判断字符串是否为空, -n 是判断字符串不为空, 不要混淆。

如果$string为空的话, [ -n "$string" -o "$a" = "$b" ]可能会在某些版本的Bash中产生错误. 安全的做法是附加一个额外的字符给可能的空变量,

[ "x$string" != x -o "x$a" ="x$b" ] ("x"字符是可以相互抵消的).


你可能感兴趣的:(shell,String,null,bash,扩展)