Comparar dos cadenas en Bash


13

Me gustaría hacer una secuencia de comandos que elimine un directorio rmdirdespués de confirmar con una contraseña readpara configurar la variable.

Hasta ahora tengo esto:

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

Entonces, tengo -xque tratar de depurarlo, pero cada vez que el script falla al hacer eco (si pongo la contraseña incorrecta) o no elimina el directorio necesario.

Si alguien tiene un script modificable que yo podría usar o si usted pudiera señalar los problemas con el script actual, sería genial.

Respuestas:



6

En las secuencias de comandos bash, debe comparar dos variables con el siguiente método.

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

Los espacios son importantes


4

También puede usar GNU test, por ejemplo:

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

En su contexto, es:

test "$S1" = "$S2" && rmdir -v /home/william/test
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.