Я пытаюсь сделать игру с лошадью, которая работает в 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 ].
См. [F5] для разницы между тремя.
PS: Запустите 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.
Вам не хватает пробелов: [ $BET=0 ] должно быть [ $BET = 0 ].
См. [F5] для разницы между тремя.
PS: Запустите 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.
Вам не хватает пробелов: [ $BET=0 ] должно быть [ $BET = 0 ].
См. [F5] для разницы между тремя.
PS: Запустите 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.