Porównywanie dwóch ciągów w Bash


13

Chciałbym stworzyć skrypt, który usuwa katalog rmdirpo potwierdzeniu hasłem przy użyciu readdo ustawienia zmiennej.

Do tej pory mam to:

#!/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

Muszę więc -xspróbować go debugować, ale za każdym razem skrypt nie echo (jeśli źle wpisuję hasło) lub nie usunie potrzebnego katalogu.

Jeśli ktoś ma modyfikowalny skrypt, którego mógłbym użyć lub mógłbyś wskazać problemy z bieżącym skryptem, byłoby świetnie.

Odpowiedzi:



6

W skryptach bash musisz porównać dwie zmienne z poniższą metodą.

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

Spacje są ważne


4

Możesz także użyć GNU test, na przykład:

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

W twoim kontekście jest to:

test "$S1" = "$S2" && rmdir -v /home/william/test
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.