[ $Server_Name=1 ]
no funciona según lo previsto porque la sintaxis dentro de los corchetes individuales no es especial para Bash. Como de costumbre, la variable $Server_Name
se sustituye por 1, por lo que todo el comando test ( [
) ve un solo argumento: la cadena 1=1
. Como esa picadura tiene una longitud distinta de cero, la prueba devuelve verdadero .
Para shells compatibles con POSIX, puede usar los siguientes comandos de prueba :
[ "$Server_Name" = 1 ]
comprueba es el $Server_Name
es igual a la cadena 1
.
[ "$Server_Name" -eq 1 ]
comprueba si es $Server_Name
igual al número 1
, es decir, hace una comparación numérica en lugar de una comparación de cadenas.
El valor de retorno de los dos comandos será diferente, por ejemplo, si lo define Server_Name=01
. El primero devolverá falso, el segundo devolverá verdadero.
Tenga en cuenta que si existe la posibilidad de que la variable $Server_Name
no esté definida, se debe citar o la prueba mostrará un error cuando se invoque.
if [ ! "x$var" = "x" ]; then\n if [ $var -eq 1 ]; then ...