您的位置:首页 > 运维架构 > Shell

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

2011-07-20 11:03 295 查看
先我们来看看在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"字符是可以相互抵消的).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: