Comparando duas strings no Bash


13

Gostaria de criar um script que exclua um diretório rmdirdepois de confirmar com uma senha usando readpara definir a variável.

Até agora eu tenho isso:

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

Então, eu tenho -xque tentar depurá-lo, mas toda vez que o script falha ao eco (se eu colocar a senha errada) ou ele não remove o diretório necessário.

Se alguém tiver um script modificável que eu possa usar ou se você puder apontar os problemas com o script atual, isso seria ótimo.

Respostas:



6

No script bash, você precisa comparar duas variáveis ​​com o método abaixo.

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

Espaços são importantes


4

Você também pode usar o GNU test, por exemplo:

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

No seu contexto, é:

test "$S1" = "$S2" && rmdir -v /home/william/test
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.