simple y doble es igual a que ambos se comporten de manera diferente

simple y doble es igual a que ambos se comporten de manera diferente

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

información relacionada