判断shell变量是否空字符串

这个错误我也犯过

#!/bin/sh

STRING=

if [ -z "$STRING" ]; then 
    echo "STRING is empty" 
fi

if [ -n "$STRING" ]; then 
    echo "STRING is not empty" 
fi

注意,一定要在变量上加上"",表示字符串,然后进行判断。-z表示空字符串,-n表示非空字符串。

如果忘记加上"",则遇到这个逻辑的时候会提示错误

line 71: [: too many arguments

如果字符串为空,在没有加""会导致误判断,导致-z-n都成立:

#!/bin/sh

STRING=

if [ -z $STRING ]; then 
    echo "STRING is empty" 
fi

if [ -n $STRING ]; then 
    echo "STRING is not empty" 
fi

执行是错误的结果:

STRING is empty 
STRING is not empty

参考

Last updated