Kheops HD
Kheops HD

Reputation: 13

Why my variables are not changing ? Bash Script

#!/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

Result :

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

I'm doing an operation on Bokoblin_HP and I would like to stop the program when it reach 0, but my variable won't change and still 30.

Upvotes: 0

Views: 291

Answers (2)

Corentin Limier
Corentin Limier

Reputation: 5006

Just swap two lines make the program work.

Also, be sure to type an upper 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

Output :

<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> ~

Upvotes: 1

Huholoman
Huholoman

Reputation: 104

Idk how is supposed to work your solution, im using this

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

Upvotes: 0

Related Questions