[ $Server_Name=1 ]
não funciona conforme o esperado, porque a sintaxe dentro dos colchetes únicos não é especial para o Bash. Como sempre, a variável $Server_Name
é substituída por 1, então todo o comando test ( [
) vê um único argumento: a string 1=1
. Como essa picada tem um comprimento diferente de zero, o teste retorna verdadeiro .
Para shells compatíveis com POSIX, você pode usar os seguintes comandos de teste :
[ "$Server_Name" = 1 ]
cheques é $Server_Name
igual a sequência 1
.
[ "$Server_Name" -eq 1 ]
cheques é $Server_Name
igual ao número 1
, ou seja, ele faz uma comparação numérica em vez de uma comparação de cadeias.
O valor de retorno do comando dois será diferente, por exemplo, se você definir Server_Name=01
. O primeiro retornará falso, o segundo retornará verdadeiro.
Observe que, se existe a possibilidade de a variável não $Server_Name
ser definida, ela deve ser citada ou o teste exibirá um erro quando invocado.
if [ ! "x$var" = "x" ]; then\n if [ $var -eq 1 ]; then ...