Vergleichen von zwei Zeichenfolgen in Bash


13

Ich möchte ein Skript erstellen, das ein Verzeichnis mit löscht, rmdirnachdem ich mit ein Passwort bestätigt habe read, um die Variable zu setzen.

Bisher habe ich das:

#!/bin/bash -x
echo "Password:"
read -t 30 S1
    S2='55555'
if [ $S1=$S2 ]; then
    rmdir /home/william/test
else
    echo "fail"
sleep 10
fi

Also muss ich -xversuchen, es zu debuggen, aber jedes Mal, wenn das Skript entweder nicht funktioniert (wenn ich das Passwort falsch eingebe) oder das benötigte Verzeichnis nicht entfernt wird.

Wenn jemand ein änderbares Skript hat, das ich verwenden könnte, oder wenn Sie auf die Probleme mit dem aktuellen Skript hinweisen könnten, wäre das großartig.

Antworten:



6

In Bash-Skripten müssen Sie zwei Variablen mit der folgenden Methode vergleichen.

if [ "var1" != "var2" ]; then
  Do something
fi;

Leerzeichen sind wichtig


4

Sie können auch GNU verwenden test, zum Beispiel:

test s1 = s2 && echo Equal || echo Not equal

In Ihrem Kontext ist es:

test "$S1" = "$S2" && rmdir -v /home/william/test
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.