根据while循环中的输出函数更改计数器 - 在bash中

问题描述 投票:1回答:1

我有一个随机返回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的输出函数更改计数器?谢谢!

bash function while-loop output counter
1个回答
2
投票

你没有在循环中捕获GetsomeLoR的输出。因此,您正在使用它在循环外第一次调用时返回的单个值。

while [ $counter -lt $number_max ]; do
    return_var=$(GetsomeLoR)
    sleep 0.1
© www.soinside.com 2019 - 2024. All rights reserved.