изменить счетчик в соответствии с функцией вывода в цикле while - в bash - PullRequest
0 голосов
/ 04 марта 2019

У меня есть функция, возвращающая случайным образом R или L. Я хочу изменить счетчик в соответствии с выводом этой функции: я хочу увеличить счетчик, когда появляется R, и уменьшать его, когда появляется L.

Мои проблемы: счетчик не изменяется в зависимости от функции выхода (R или L) и счетчик только уменьшается или только увеличивается.

#GetsomeLoR is a function returning R or L
function GetsomeLoR() {
  set -- "R" "L"
  eval echo \$$(expr $RANDOM % 2 + 1)
  sleep 0.015
}

return_var=$(GetsomeLoR) # return the output of the function named GetsomeLoR
counter="1" 
number_max="60"

while [ $counter -lt $number_max ]; do
    GetsomeLoR && sleep 0.1 
    if [[ $return_var == "L" ]]; then
        counter=$[$counter-1]
        echo $counter increase
    elif [[ $return_var == "R" ]]; then
        counter=$[$counter+1]
        echo $counter decrease
    else
        echo error_buddy
    fi
done

Мои вопросы: Как изменить счетчик в соответствии с функцией вывода с именем GetsomeLoR?Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Вы не фиксируете вывод GetsomeLoR в вашем цикле.Таким образом, вы используете единственное значение, которое оно вернуло при первом вызове вне вашего цикла.

while [ $counter -lt $number_max ]; do
    return_var=$(GetsomeLoR)
    sleep 0.1
...