Я пытаюсь сделать игру для ставок на лошади, которая работает в 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
Почему это не работает? Заранее спасибо
Вам не хватает пробела: вместо [ $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.