
Aquí hay una línea simple de un código más grande que es lo que me confunde.
if [ $some_line == "text" ]
then
Luego pasé a usar el mismo código para otro programa en el que estaba trabajando, pero el código no funcionó A MENOS que cambiara "==" a "=". He revisado algunos hilos aquí que sugieren que ambos actúan de la misma manera, por lo que no importa si usas iguales simples o dobles.
if [ $some_line = "text" ]
then
Entonces, el primer fragmento de código funciona en el servidor1 pero no en el servidor2 A MENOS que lo cambie a "único igual". Ambos servidores tienen exactamente el mismo entorno.
¿Alguien puede explicarlo? ¡Gracias!
EDITAR: ejecuto el script como "bash myscript.sh" cada vez.
Respuesta1
==
y son pruebas =
internas equivalentes en .[ ]
bash
==
no funciona en sh
, solo=
¿Está ejecutando ambos scripts con el mismo shell?
Ejemplo:
$ cat test1
#!/bin/bash
if [ "a" == "a" ];then echo match;fi
$ ./test1
match
$ cat test2
#!/bin/bash
if [ "a" = "a" ];then echo match;fi
$ ./test2
match
$ cat test3
#!/bin/sh
if [ "a" = "a" ];then echo match;fi
$ ./test3
match
$ cat test4
#!/bin/sh
if [ "a" == "a" ];then echo match;fi
$ ./test4
./test4: 2 [: a: unexpected operator