
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