Comparando duas strings no Bash

11

Eu gostaria de criar um script que exclua um diretório com rmdir após confirmar com uma senha usando read para 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

Portanto, eu tenho o -x para tentar depurá-lo, mas toda vez que o script não faz eco (se eu colocar a senha errada) ou não removerá 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.

    
por Desert_foxhole 30.09.2013 / 09:42

3 respostas

16

O caminho certo para comparar essas duas strings ( S1 e S2 ) usando if é:

if [ "$S1" = "$S2" ]

Não seja mesquinho em espaços de uso, neste caso.

Veja: link

    
por Radu Rădeanu 30.09.2013 / 10:11
6

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

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

Espaços são importantes

    
por Mansur Ali 16.02.2015 / 17:02
2

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
    
por kenorb 13.10.2015 / 02:57