只循环脚本
问题描述:
我有我制作的这个脚本。只循环脚本
#!/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),用小写字母替换大写变量名(大写字母为reserved for environment variables used by the shell and utilities),并在循环后重置颜色。
最后,尽管引用tput cup "$r" "$c"
中的变量几乎总是一种很好的做法,但这里并不需要,因为我们知道它们将是没有空格的数字–,但它也不会伤害。
如果你只遍历'tput'部分,随机数只设置一次;你必须循环你的整个脚本。 –
此外,'$ []'是古老的,甚至没有为Bash记录,你应该使用'$(())'代替。 –
所以我需要循环减速以及? – Grunt