[ $Server_Name=1 ]
не работает должным образом, потому что синтаксис внутри одинарных скобок не является особенным для Bash. Как обычно, переменная $Server_Name
заменяется на 1, поэтому вся команда test ([
) видит один аргумент: строка 1=1
. Поскольку эта строка имеет ненулевую длину, test возвращает true .
Для POSIX-совместимых оболочек вы можете использовать следующие тестовые команды:
[ "$Server_Name" = 1 ]
проверяет, что $Server_Name
равно строке 1
.
[ "$Server_Name" -eq 1 ]
проверяет, что $Server_Name
равно числу 1
, т. е. выполняет сравнение чисел вместо сравнения строк.
Возвращаемое значение двух команд будет отличаться, например, если вы определите Server_Name=01
. Первый вернет false, второй вернет true.
Обратите внимание, что если существует вероятность, что переменная $Server_Name
не определена, она должна быть заключена в кавычки, иначе при вызове test отобразит ошибку.