Encontrando uma string dentro de uma variável no bash

2

Eu tenho o seguinte no bash:

string="/opt/directory/"

Então, quando faço o seguinte:

if [[ $string != *"directory"* ]]

interpreta como se o diretório não estivesse dentro da string. Por quê? Como posso resolver esse problema?

EDITAR:

Eu me sinto muito bobo sobre isso, eu realmente fiz algumas alterações no meu script, usando a barra um deles e não consegui descobrir o que estava errado por cerca de uma hora e depois que um de vocês mencionou que deveria funcionar assim, percebi que era porque, em algum lugar no meio, eu havia transferido a variável para outra coisa, por isso não estava pegando.

Talvez eu exclua essa pergunta, já que realmente foi minha culpa e não acho que isso irá adicionar muita coisa a ninguém!

    
por Ulukai 30.11.2015 / 15:20

2 respostas

2

Parece funcionar corretamente. Se eu tentar isso:

string="/opt/directory/"

if [[ $string != *"directory"* ]]; then
    echo "true"
else
    echo "false"
fi

Em seguida, ele informa corretamente false . Em outras palavras, a pergunta " faz $string não conter *"directory"* " é falso , pois $string contém *"directory"* .

Talvez você quisesse perguntar " faz $string conter *"directory"* ", caso em que você precisa usar:

if [[ $string == *"directory"* ]]

(observe o uso de == em vez de != .)

    
por Daniel Pelsmaeker 30.11.2015 / 15:30
0

Usando:

string="/opt/directory/"
if [[ $string != *directory* ]]; then
    echo "not found"
else
    echo "found"
fi
    
por A.B. 30.11.2015 / 15:25