在bash中为for循环分配变量

时间:2013-12-24 07:06:20

标签: bash for-loop

以下bash脚本可以正常打印1到10之间的数字:

for i in {1..10}
do
  echo "$i"
done

但是,如果我想将上限设为变量,则此脚本不起作用。

i=10
for j in {1..$i}
do
  echo "$j"
done

有人可以建议如何使第二个脚本工作吗?

2 个答案:

答案 0 :(得分:1)

Brace expansion在任何其他扩张之前发生。

你可以说:

for j in $(seq 1 $i); do echo "$j"; done

从上面的链接引用:

  

支撑扩展在任何其他扩展之前执行,任何扩展   其他扩展特有的字符将保留在结果中。它   严格是文字的。 Bash不适用任何句法解释   在扩展的背景下或大括号之间的文本。至   避免与参数扩展冲突,字符串‘${’不是   被认为有资格进行支撑扩张。

答案 1 :(得分:1)

您不能在Bash的{..}指令中使用变量。像这样使用BASH算术运算符((...))

i=10
for ((j=1; j<=i; j++)); do
    echo "$j"
done