序列扩展和bash中的变量

Chm*_*nah 7 bash expansion

当seq数是变量时,我在Bash中遇到内置序列(即:不使用seq)的问题.例如,这工作并打印我1 2 3:

for i in {1..3};do echo $i;done
Run Code Online (Sandbox Code Playgroud)

但是这个 :

bash-3.2 $ a = 3;对于i在{1 .. $ a};做回声$ i;完成

失败并仅打印我{1..3}

这适用于ZSH,我知道我有一个替代方案来制作一个反制品,但想知道这是一个bug还是大括号扩展功能!

Sha*_*hin 5

另一种方法是使用双括号结构,它允许 C 风格的循环:

A=3
for (( i=1; i<=$A; i++ )); do
    echo $i
done
Run Code Online (Sandbox Code Playgroud)


Pau*_*ce. 5

在Bash中,在变量扩展之前执行大括号扩展.有关订单,请参阅Shell Expansions.

$ a=7; echo {1..3} {4..$a}
1 2 3 {4..7}
Run Code Online (Sandbox Code Playgroud)

如果要使用变量,请使用C样式的for循环,如Shawn的答案.