it-swarm.com.de

Wie kann ich eine Variable in einer if / else-Anweisung mit einer Textzeichenfolge anstelle einer Ganzzahl vergleichen?

Beim Schreiben eines Shell-Skripts stieß ich auf ein Problem mit der folgenden if/else-Anweisung, die sich irgendwo in der Mitte des Skripts befindet:

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

Der zurückgegebene Fehler ist:

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

und fährt dann mit dem Rest des Skripts fort. Wie kann das if-Segment die Variable eher mit einer Zeichenfolge als mit einer Ganzzahl bewerten/vergleichen lassen? Bei der Verwendung von "! =" war unter anderem ein anderer Fehler erforderlich.

23
tony_perkis666

Etwas wie das:

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

-eq dient zum Vergleichen von Zahlen, = zum Vergleichen von Zeichenfolgen

36
Guru

Diese Methode würde auch funktionieren. Sehr ähnlich zu @ Gurus Antwort, jedoch ohne doppelte eckige Klammern.

if [ "$act" == "add" ]
then
echo "Good!"
      else
      echo "Not good!"
fi
4
Yokai