simples e duplo é igual a ambos se comportando de maneira diferente

1

Aqui está uma linha simples de um pedaço maior de código que é o que eu estou confuso sobre.

if [ $some_line == "text" ]
then

Depois, usei o mesmo código para outro programa em que estava trabalhando, mas o código não funcionava A MENOS que eu mudei "==" para "=". Eu passei por alguns tópicos aqui que sugere que ambos agem da mesma maneira, então não importa se você usa um ou dois iguais.

if [ $some_line = "text" ]
then

Portanto, a primeira parte do código funciona no server1, mas não no server2, A MENOS QUE eu mude para "single equals". Ambos os servidores têm exatamente o mesmo ambiente.

Alguém pode explicar? Obrigado!

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

    
por Nishant 30.05.2018 / 13:17

1 resposta

2

== 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
    
por 30.05.2018 / 13:22

Tags