如何创建迭代次数可变的 for 循环?

如何创建迭代次数可变的 for 循环?

当用户在开始时指定 n 时,如何迭代循环 n 次?

我编写了一个 shell 脚本,需要将其中的某个部分重复 n 次(取决于用户希望的次数)。

到目前为止我的脚本如下所示:

echo "how many times would you like to print Hello World?"
read num
for i in {1.."$num"}
do
echo "Hello World"
done

如果我将“num”更改为“5”等数字,则循环可以工作,但是我需要能够让用户指定迭代循环的次数。

答案1

您可以使用seq

for i in $(seq 1 "$num") 

或者你的 shell 可能支持 C 风格的循环,例如在 bash 中

for ((i=0; i<$num; i++))

答案2

echo "how many times would you like to run your loop ?"
read  max

i=0
while [ "$((i+=1))" -le "$max" ]
do
   # whatever you want to do here
done

答案3

使用“算术求值”(仅限 bash):

read -p "how many times would you like to print Hello World? " max

i=0
while  (( i++ < max ))
do
   echo "$i, Hello World."
done

或者如果您想让程序更加健壮,请使用它。
这将从输入中仅提取数字。除了可能需要很长时间才能处理的非常大的数字之外,任何其他输入都将在使用之前进行清理。

while (( i++ < ${max//[^0-9]} ))

答案4

还有另一种方式与{1.."$num"}.在将其转移到 for 循环之前,需要评估 Bash 扩展。您可以通过这种方式使用扩展语法来使其工作:

for i in $(eval echo {1.."$num"}); 
do 
 echo $i; 
done

相关内容