我正在使用SH shell,我试图比较一个字符串与变量的值,但if
条件始终执行为true。为什么?比较Unix中的一个字符串
下面是一些代码:
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
即使这是行不通的:
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
其次,我们可以匹配这个用NULL或空字符串?
首先在Bourne Shell中你不需要额外的 ';'当我测试在Bourne shell中运行脚本时,if条件为false。它会首先发出警告:[:ABC:预期的整数表达式。输出是:“Sourcesystem不符合ABC”。正如其他人所评论的,-eq用于整数比较。在Bourne shell中使用单个等号进行字符串比较(#!/ bin/sh)。你的外壳本来应该纠正你。 –