NickProgramm
@NickProgramm
Люблю front-end

Как решить проблему с if..else в bash?

Здравствуйте!
Я пишу игру:
#! /bin/bash
while true
do
        a=$((1 + RANDOM % 10))
        b=$((1 + RANDOM % 10))
        res=$a+$b
        echo -n "$a + $b = "
        read path
        echo ""
        if [[ "$path" = "$res" ]]
        then
                echo "It's true"
        else
                echo "It's false!!!"
        fi
done

Однако, он всегда выводит
It's false!!!

Что делать???
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
По умолчанию баш создает все переменные текстовыми, следовательно
res=$a+$b у вас получается контакенация строк, а не сложение чисел.

Используйте явное арифметическое сложение через res=$(( $a + $b ))
либо заранее все переменные задекларируйте как integer через
declare -i a
declare -i b
declare -i res
declare -i path

А в идеале и сравнение вместо [[ "$path" = "$res" ]] делайте числовым [[ $path -eq $res ]]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
А вы посмотрите что у вас в $res

Надо
res=$(( $a + $b ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы