我制作了这个剧本。
#!/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循环来改进我的脚本,我们将非常感激。
答案 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"
中引用变量几乎总是好的做法,但这里不需要它,因为我们知道它们是没有空格的数字 - 但是它也不会受伤。