【发布时间】:2019-07-26 01:23:53
【问题描述】:
我有一个随机返回 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 () { if (( RANDOM % 2 )); then echo R; else echo L; fi; }。不需要expr,当然也不需要eval。 -
另外,
$[...]太可怕了,太可怕了已经过时了。请改用$((...))。
标签: bash function while-loop output counter