linux shell 中判断字符串为空的正确方法

Linux 下判断字符串是否为空,有一个大坑!

首先想到的两个参数:

-z:判断 string 是否是空串
-n:判断 string 是否是非空串

常规错误做法

1
2
3
4
5
6
7
8
9
#!/bin/sh
STRING=
if [ -z $STRING ]; then
echo "STRING is empty"
fi

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

看上去没毛病,但是!

输出错误结果:

1
2
3
root@james-desktop:~# ./zerostring.sh 
STRING is empty
STRING is not empty

发现使用 -n 判断时,竟然出现错误!

正确做法

1
2
3
4
5
6
7
8
9
10
#!/bin/sh

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

if [ -n "$STRING" ]; then
echo "STRING is not empty"
fi
1
2
root@james-desktop:~# ./zerostring.sh 
STRING is empty

这里,我们得出一个道理,在进行字符串比较时,用引号将字符串界定起来,是一个非常好的习惯!

参考:

https://www.cnblogs.com/cute/archive/2011/08/26/2154137.html

hoxis wechat
一个脱离了高级趣味的程序员,关注回复1024有惊喜~
赞赏一杯咖啡
0%