只需循环脚本

时间:2017-04-18 15:24:59

标签: 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 {1..10}
do
my script starting at tput
sleep 1 
done

但它不起作用或抛出错误代码,并且就像添加的脚本的其他部分不在那里一样。

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

1 个答案:

答案 0 :(得分:1)

您必须将整个脚本包含在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记录),将大写变量名称替换为小写变量名称(大写为{ {3}})并在循环后重置颜色。

最后,尽管在tput cup "$r" "$c"中引用变量几乎总是好的做法,但这里不需要它,因为我们知道它们是没有空格的数字 - 但是它也不会受伤。