当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还是大括号扩展功能!
另一种方法是使用双括号结构,它允许 C 风格的循环:
A=3
for (( i=1; i<=$A; i++ )); do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
在Bash中,在变量扩展之前执行大括号扩展.有关订单,请参阅Shell Expansions.
$ a=7; echo {1..3} {4..$a}
1 2 3 {4..7}
Run Code Online (Sandbox Code Playgroud)
如果要使用变量,请使用C样式的for循环,如Shawn的答案.