[ $Server_Name=1 ]
не працює за призначенням, оскільки синтаксис в окремих дужках не є особливим для Bash. Як завжди, змінна $Server_Name
стає заміщеною на 1, тому вся команда test ( [
) бачить один аргумент: рядок 1=1
. Оскільки ця жала має ненульову довжину, тест повертає істину .
Для сумісних з POSIX оболонок можна використовувати наступні тестові команди:
[ "$Server_Name" = 1 ]
check - $Server_Name
це дорівнює рядку 1
.
[ "$Server_Name" -eq 1 ]
check - $Server_Name
це дорівнює кількості 1
, тобто він робить числове порівняння замість порівняння рядків.
Повернене значення двох команд буде відрізнятися, наприклад, якщо ви визначаєте Server_Name=01
. Перший поверне помилковий, другий поверне істинним.
Зауважте, що якщо існує можливість того, що змінна $Server_Name
не визначена, вона повинна бути котирована або тест покаже помилку при виклику.
if [ ! "x$var" = "x" ]; then\n if [ $var -eq 1 ]; then ...