在bash的for循环中分配变量

在bash的for循环中分配变量,bash,for-loop,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 有人能建议如何使第二个脚本工作吗?在任何其他扩展之前进行 你可以说: for j in $(seq 1 $i); do echo "$j"; done 引用上述链接: 支架展开在任何其他展开之前执行,并且 结果中保留了其他扩展的特殊

以下bash脚本可以很好地打印从1到10的数字:

for i in {1..10}
do
  echo "$i"
done
但是如果我想把上限设为变量,那么这个脚本就不起作用了

i=10
for j in {1..$i}
do
  echo "$j"
done
有人能建议如何使第二个脚本工作吗?

在任何其他扩展之前进行

你可以说:

for j in $(seq 1 $i); do echo "$j"; done
引用上述链接:

支架展开在任何其他展开之前执行,并且 结果中保留了其他扩展的特殊字符。信息技术 这是严格的文本。Bash不应用任何语法解释 指向展开的上下文或大括号之间的文本。到 避免与参数扩展冲突,字符串
'${'
不可用 认为有资格进行支架扩展


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

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

对于((j=1;j只是想知道
seq
命令的历史,因为我从来没有在我的Mac上使用过它。@anubhava我不知道你在使用哪个OSX版本,但我发现它存在于我使用过的任何变体上,10.8.x或10.5.x或其他任何东西上…@anubhava也许你做了
sudo rm-f$(哪个seq)
,并且忘记了这么做!哈哈:)我删除一个系统二进制文件一定是疯了,为什么会有人这样做?在for和括号之间需要一个空格?谢谢你的回答。@prabhat:你可以这样说,空格在
for
之后就已经存在了,但对我来说,不管有没有空格,它都可以工作。