私はSHシェルを使用していますが、文字列と変数の値を比較しようとしていますが、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シェルでスクリプトをテストすると、if条件はfalseになります。最初に警告を出します:[:ABC:整数式が必要です。出力は「ソースシステムはABCと一致しません」と表示されます。他の人がコメントしたように、-eqは整数比較に使用されます。 Bourneシェル(#!/ bin/sh)の文字列比較には、等号を1つ使用してください。あなたのシェルはまずあなたを訂正したはずです。 –