Sto usando SH shell e sto provando a confrontare una stringa con il valore di una variabile, ma la condizione if
è sempre eseguita su true. Perché?Confronta una stringa in Unix
Ecco il codice:
Sourcesystem="ABC"
if [ "$Sourcesystem" -eq 'XYZ' ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
Anche questo non sta funzionando:
Sourcesystem="ABC"
if [ 'XYZ' -eq "$Sourcesystem" ]; then
echo "Sourcesystem Matched"
else
echo "Sourcesystem is NOT Matched $Sourcesystem"
fi;
echo Sourcesystem Value is $Sourcesystem ;
In secondo luogo, possiamo abbinare questo con un valore NULL o una stringa vuota?
primo a Bourne shell non è necessario l'extra ';' Quando eseguo il test dello script nella shell Bourne, la condizione if è falsa. Daremo prima un avvertimento: [: ABC: espressione intera prevista. L'output è: "Sourcesystem NOT NOT Matched ABC". Come commentato da altri, -eq è usato per confronti tra interi. Utilizzare un singolo segno di uguale per il confronto delle stringhe nella shell Bourne (#!/Bin/sh). Il tuo guscio dovrebbe averti corretto in primo luogo. –