簡體   English   中英

在while循環中根據輸出函數更改計數器-在bash中

[英]change a counter according to a output function in a while loop - in bash

我有一個隨機返回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的輸出函數更改計數器? 謝謝!

您沒有在循環中捕獲GetsomeLoR的輸出。 因此,您將使用它在循環外的第一次調用中返回的單個值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM