有没有办法在脚本运行时更改输出? 假设我有一个名为"数字"它正在运行。该脚本使用此循环打印1到49之间的数字:
for ((a=1; a<50; a++))
do
echo $a
sleep 1
done
如何在循环运行时更改此循环的输出?让我们说如果我在跑步过程中按a或b,它应该从结果中减去1。
答案 0 :(得分:2)
如评论中所述,在如此短的时间内没有时间做任何事情。但如果我让跑步越来越慢,我就可以展示类似于你所要求的东西。
declare -i a b c # Ensure these values are treated as integers
b=1
for ((a=0; a < 10**6; a+=b)); do
read -s -N1 -t.3 c && b=c
printf '%d...' "$a"
done
echo
read
参数的细分:
read -s # Don't echo output
-N1 # Read one character of input*
-t.3 # Wait for .3 seconds before giving up
c &&
b=c # If read was successful, assign value to c, then b
这里有些疯狂。享受:
declare -i a b
b=1
for ((a=0; a < 10**6; a+=b)); do
if read -s -N1 -t.01 c; then
case $c in
j) b=b+1;;
k) b=b-1;;
esac
fi
printf '%d...' "$a"
done
echo
*我注意到bash v3似乎使用read -n1
和v4 read -N1
。