Comparaison de deux chaînes dans Bash


13

Je voudrais faire un script qui supprime un répertoire avec rmdiraprès avoir confirmé avec un mot de passe en utilisant readpour définir la variable.

Jusqu'à présent, j'ai ceci:

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

Donc, j'ai le -xpour essayer de le déboguer mais à chaque fois que le script échoue (si je mets le mot de passe de manière incorrecte) ou qu'il ne supprime pas le répertoire nécessaire.

Si quelqu'un a un script modifiable que je pourrais utiliser ou si vous pourriez signaler les problèmes avec le script actuel, ce serait génial.

Réponses:



6

Dans les scripts bash, vous devez comparer deux variables avec la méthode ci-dessous.

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

Les espaces sont importants


4

Vous pouvez également utiliser GNU test, par exemple:

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

Dans votre contexte, c'est:

test "$S1" = "$S2" && rmdir -v /home/william/test
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.