Пока цикл не заканчивается, когда условие выполнено

Я пытаюсь сделать игру для ставок на лошади, которая работает в bash.
Я скопировал библиотеку gpio в ubuntu из raspbian. Цикл while не заканчивается, когда $ BET не равен 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

Почему это не работает? Заранее спасибо

1
задан 16 January 2018 в 23:04

1 ответ

Вам не хватает пробела: вместо [ $BET=0 ] должно быть [ $BET = 0 ]. Еще лучше выполнить численное сравнение с [ $BET -eq 0 ].

См. man test для различия между тремя.

P.S .: Запустите shellcheck (из одноименного пакета), чтобы помочь вам обнаружить потенциальные недостатки и проблемы в сценариях оболочки. Для вашего сценария он печатает:

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.
4
ответ дан 16 January 2018 в 23:04

Другие вопросы по тегам:

Похожие вопросы: