shell中对返回结果是否为空的判断

前提:查询weblogic进程是否存在(假设只存在一个weblogic)

A=`ps -ef|grep weblogic|grep -v grep|awk '{print $2}'`
[ -n $A ]

echo $?
[ -z $A ]
echo $?
问题:当weblogic进程存在时,分别返回0和1,但是当进程不存在时分别返回0和0,因为-n是判断非空串,当进程不存在时返回A为空,那么此时[ -n $A ]执行结果为什么仍是0而不是1呢?求解!!!

第1个回答  2013-08-16
[ -n $A ] 改为 [ -n "$A" ]
-n是对字符串是否为空进行判断,后面必须是字符串形式,请加双引号,否则可能出错。本回答被提问者采纳
第2个回答  2013-08-16

你把$A用引号引起来试试. 如下

[ -n "$A" ]
[ -z "$A" ]

相似回答