Я использую 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, условие if является ложным. Сначала будет выдано предупреждение: [: ABC: ожидается целочисленное выражение. Вывод: «Sourcesystem НЕ соответствует ABC». Как отмечалось другими, -eq используется для целых сравнений. Используйте один знак равенства для сравнения строк в оболочке Bourne (#!/Bin/sh). Ваша оболочка должна была исправить вас в первую очередь. –