用可变的顶端编写一个bash for-loop

我经常使用众所周知的语法在bash中编写for循环:

for i in {1..10} [...] 

现在,我正试图写一个顶部由variables定义的地方:

 TOP=10 for i in {1..$TOP} [...] 

我已经尝试了各种各样的parens,花括号,评估等,并且通常会返回一个错误的“错误替代”。

我怎么能写我的for循环,以便极限取决于一个variables,而不是一个硬编码值?

Solutions Collecting From Web of "用可变的顶端编写一个bash for-loop"

你可以像这样使用for循环来迭代一个变量$TOP

 for ((i=1; i<=$TOP; i++)) do echo $i # rest of your code done 

如果你有一个GNU系统,你可以使用seq生成各种序列,包括这个。

 for i in $(seq $TOP); do ... done 

答案部分在这里 :参见例11-12。 一个C风格的循环

这里是一个总结,但要注意你的问题的最终答案取决于你的bash解释器( / bin / bash –version ):

 # Standard syntax. for a in 1 2 3 4 5 6 7 8 9 10 # Using "seq" ... for a in `seq 10` # Using brace expansion ... # Bash, version 3+. for a in {1..10} # Using C-like syntax. LIMIT=10 for ((a=1; a <= LIMIT ; a++)) # Double parentheses, and "LIMIT" with no "$". # another example lines=$(cat $file_name | wc -l) for i in `seq 1 "$lines"` # An another more advanced example: looping up to the last element count of an array : for element in $(seq 1 ${#my_array[@]})