simples e duplo são iguais, ambos se comportando de maneira diferente

simples e duplo são iguais, ambos se comportando de maneira diferente

Aqui está uma linha simples de um trecho de código maior, sobre o qual estou confuso.

if [ $some_line == "text" ]
then

Depois, usei o mesmo código para outro programa em que estava trabalhando, mas o código não funcionou, A MENOS que eu alterasse "==" para "=". Eu li alguns tópicos aqui que sugerem que ambos agem da mesma maneira, então não importa se você usa iguais simples ou duplos.

if [ $some_line = "text" ]
then

Portanto, o primeiro trecho de código funciona no servidor1, mas não no servidor2, A MENOS que eu o altere para "igual único". Ambos os servidores possuem exatamente o mesmo ambiente.

Alguém pode explicar? Obrigado!

EDIT - Estou executando o script como "bash myscript.sh" sempre.

Responder1

==e =são equivalentes dentro de [ ]testes em bash.

==não funciona em sh, apenas=

Você está executando os dois scripts com o mesmo shell?

Exemplo:

$ 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

informação relacionada