Enquanto o loop não termina quando a condição é satisfeita

1

Estou tentando fazer um jogo de apostas a cavalo que seja executado no bash | Eu copiei a biblioteca do gpio para o ubuntu do raspbian O loop while não termina quando $ BET não é 0

BET=0
while [ $BET=0 ]
do
    if [ $(gpio read 21) -eq 1 ]
        then
            BET=1
    elif [ $(gpio read 22) -eq 1 ]
        then
            BET=2
    elif [ $(gpio read 23) -eq 1 ]
        then
            BET=3
    elif [ $(gpio read 24) -eq 1 ]
        then
            BET=4 
    elif [ $(gpio read 25) -eq 1 ]
        then
            BET=5
    else
        echo "" > /dev/null 
    fi
    echo $BET
done

Por que isso não funciona? Agradecemos antecipadamente

    
por 9291Sam 16.01.2018 / 20:31

1 resposta

4

Você está perdendo algum espaço em branco: [ $BET=0 ] deve ser [ $BET = 0 ] . Melhor ainda, faça uma comparação numérica com [ $BET -eq 0 ] .

Veja man test para a diferença entre os três.

P.S .: Execute shellcheck (do pacote de mesmo nome) para ajudá-lo a identificar potenciais falhas e problemas em scripts de shell. Para o seu script, imprime:

In - line 2:
while [ $BET=0 ]
        ^-- SC2077: You need spaces around the comparison operator.


In - line 4:
    if [ $(gpio read 21) -eq 1 ]
         ^-- SC2046: Quote this to prevent word splitting.


In - line 7:
    elif [ $(gpio read 22) -eq 1 ]
           ^-- SC2046: Quote this to prevent word splitting.


In - line 10:
    elif [ $(gpio read 23) -eq 1 ]
           ^-- SC2046: Quote this to prevent word splitting.


In - line 13:
    elif [ $(gpio read 24) -eq 1 ]
           ^-- SC2046: Quote this to prevent word splitting.


In - line 16:
    elif [ $(gpio read 25) -eq 1 ]
           ^-- SC2046: Quote this to prevent word splitting.
    
por David Foerster 16.01.2018 / 21:04