Bash 只需循环脚本

Bash 只需循环脚本,bash,for-loop,Bash,For Loop,我有我制作的剧本 #!/bin/bash R=$[ (RANDOM % 25 ) + 1 ] c=$[ (RANDOM % 80 ) + 1 ] CO=$[ (RANDOM % 7 ) + 1 ] tput setf $CO tput cup $R $C echo "New Position" 编写脚本的目的是在屏幕上跳跃,呼应“新位置”并改变颜色。我的问题是,我需要它循环10次,我在互联网上找到的所有例子都使用某种位置参数输入。或者某种类型的输入变量。我试过使用 for now in {

我有我制作的剧本

#!/bin/bash

R=$[ (RANDOM % 25 ) + 1 ]
c=$[ (RANDOM % 80 ) + 1 ]
CO=$[ (RANDOM % 7 ) + 1 ]

tput setf $CO
tput cup $R $C
echo "New Position"
编写脚本的目的是在屏幕上跳跃,呼应“新位置”并改变颜色。我的问题是,我需要它循环10次,我在互联网上找到的所有例子都使用某种位置参数输入。或者某种类型的输入变量。我试过使用

for now in {1..10}
do
my script starting at tput
sleep 1 
done
但是它不起作用,或者抛出错误代码,并且好像添加的脚本的额外部分不在那里一样


对于如何使用不需要位置参数的for循环改进我的脚本,我们将不胜感激。

您必须将整个脚本包含在for循环中;变量只设置一次,否则,查看它们的值不会重复第一次定义它们时发生的情况:

#!/bin/bash

for now in {1..10}; do
    r=$(( (RANDOM % 25 ) + 1 ))
    c=$(( (RANDOM % 80 ) + 1 ))
    co=$(( (RANDOM % 7 ) + 1 ))

    tput setf $co
    tput cup $r $c
    echo "New Position"
done

tput sgr0
我还将
$[]
替换为
$(())
,因为前者已被弃用(甚至不再为Bash编写文档),将大写变量名替换为小写变量名(大写为),并在循环后重置颜色


最后,虽然在
tput cup“$r”“$c”
中引用变量几乎总是很好的做法,但这里不需要这样做,因为我们知道它们是没有空格的数字,但也不会有任何影响。

如果只循环
tput
部分,则随机数只设置一次;你必须循环你的整个脚本。而且,
$[]
是很古老的,甚至不再为Bash编写文档,你应该使用
$(())
。所以我也需要循环减速?是的,否则
R
c
CO
的值不会改变。非常感谢!!我正在从旧的BASH手册中学习,这就是为什么我有[而不是((但我会记下来。再次感谢你)。