只循环脚本

问题描述:

我有我制作的这个脚本。只循环脚本

#!/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

如果你只遍历'tput'部分,随机数只设置一次;你必须循环你的整个脚本。 –

+2

此外,'$ []'是古老的,甚至没有为Bash记录,你应该使用'$(())'代替。 –

+0

所以我需要循环减速以及? – Grunt

您必须将整个脚本放在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),用小写字母替换大写变量名(大写字母为reserved for environment variables used by the shell and utilities),并在循环后重置颜色。

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