Почему мои переменные не меняются? Bash Script - PullRequest
0 голосов
/ 18 октября 2019
#!/bin/bash                                                                                                 

RED='\033[0;31m'
NC='\033[0m'
Bokoblin_HP=30
Bokoblin_STR=5
Link_HP=60
Link_STR=10

while [ $Bokoblin_HP -ne 0 ]
      echo "Bokblin HP : ${Bokoblin_HP}/30"
do
    read -p "Press A to Attack or Press H to Heal : " action
    if [ $action = "A" ]
    then
        ((Bokoblin_HP=$Bokoblin_HP-$Link_STR))
        echo $Bokoblin_HP
    fi
done

Результат:

Bokoblin HP : 30/30
Press A to Attack or Press H to Heal : A
30

Я выполняю операцию на Bokoblin_HP и хочу остановить программу, когда она достигнет 0, но моя переменная не изменится и все равно 30.

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Просто поменяйте две строки, чтобы программа работала.

Кроме того, обязательно наберите верхний A

#!/bin/bash                                                                                                 

RED='\033[0;31m'
NC='\033[0m'
Bokoblin_HP=30
Bokoblin_STR=5
Link_HP=60
Link_STR=10

while [ $Bokoblin_HP -ne 0 ]
do
    echo "Bokblin HP : ${Bokoblin_HP}/30"
    read -p "Press A to Attack or Press H to Heal : " action
    if [ $action = "A" ]
    then
        ((Bokoblin_HP=$Bokoblin_HP-$Link_STR))
        echo $Bokoblin_HP
    fi
done

Выход:

<user>@<machine> ~
└─ $ ./test.sh 
Bokblin HP : 30/30
Press A to Attack or Press H to Heal : A
20
Bokblin HP : 20/30
Press A to Attack or Press H to Heal : A
10
Bokblin HP : 10/30
Press A to Attack or Press H to Heal : A
0
<user>@<machine> ~
0 голосов
/ 18 октября 2019

ИДК, как предполагается работать с вашим решением, я использую это

Bokoblin_HP=$(($Bokoblin_HP-$Link_STR))

...