我正在使用SH shell,我正在尝试将字符串与变量的值进行比较,但if条件总是执行为true.为什么?
这是一些代码:
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)
即使这不起作用:
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Run Code Online (Sandbox Code Playgroud)
其次,我们可以将它与NULL或空字符串匹配吗?
Mit*_*dir 238
您应该使用=运算符进行字符串比较:
Sourcesystem="ABC"
if [ "$Sourcesystem" = "XYZ" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
Run Code Online (Sandbox Code Playgroud)
man test说你-z用来匹配空字符串.
小智 26
eq用于比较整数使用等于'=',例如:
if [ 'AAA' = 'ABC' ];
then
echo "the same"
else
echo "not the same"
fi
Run Code Online (Sandbox Code Playgroud)
祝好运
Esw*_*nti 16
我有同样的问题,这样做
if [ 'xyz' = 'abc' ];
then
echo "match"
fi
Run Code Online (Sandbox Code Playgroud)
注意空格.在这种情况下,在=符号之前和之后使用空格非常重要.
查看" 其他比较运算符 ".
-eq是一个数学比较运算符.我从来没有用它来进行字符串比较,依赖==和!=比较.
if [ 'XYZ' == 'ABC' ]; then # Double equal to will work in Linux but not on HPUX boxes it should be if [ 'XYZ' = 'ABC' ] which will work on both
echo "Match"
else
echo "No Match"
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
430277 次 |
| 最近记录: |