Como posso comparar uma variável com uma string de texto, em vez de um inteiro, em uma instrução if / else?

15

No processo de escrever um script de shell, me deparei com um problema com a seguinte declaração if / else que está em algum lugar no meio do script:

if [ $act -eq "add" ]
then
    read - "add or update: " $comm
    git commit -m "$comm $file"
else
    git commit -m "$act $file"
fi

O erro de retorno é:

./gitup: line 13: [: add: integer expression expected

e depois prossegue com o resto do script. Como posso ter o segmento if avaliar / comparar a variável com uma entrada de string em vez de um inteiro; um erro diferente foi necessário ao usar "!=" entre algumas outras coisas que tentei.

    
por tony_perkis666 30.01.2013 / 05:49

2 respostas

29

Algo parecido com isto:

act="add"
if [[ $act = "add" ]]
then
    echo good
else
    echo not good
fi

-eq é para comparação de números, use = para comparação de string

    
por 30.01.2013 / 05:52
2

Esse método também funcionaria. Muito semelhante à resposta do @ Guru, mas elimina a necessidade de colchetes duplos.

if [ "$act" == "add" ]
then
echo "Good!"
      else
      echo "Not good!"
fi
    
por 14.05.2016 / 12:06