用于for循环数语法上限的bash变量

用于for循环数语法上限的bash变量,bash,variables,for-loop,Bash,Variables,For Loop,如果我像这样创建一个bash循环,使用文字数字,则所有操作都会按预期进行: #!/bin/bash for i in {1..10}; do echo $i done 输出为: 1 2 3 4 5 6 7 8 9 10 但是,如果我想在变量中使用上限,我似乎无法正确使用它。以下是我的四次尝试: #!/bin/bash n=10 for i in {1..$n}; do echo $i done for i in {1.."$n"}; do echo $i done

如果我像这样创建一个bash循环,使用文字数字,则所有操作都会按预期进行:

#!/bin/bash
for i in {1..10};  do
  echo $i 
done
输出为:

1
2
3
4
5
6
7
8
9
10
但是,如果我想在变量中使用上限,我似乎无法正确使用它。以下是我的四次尝试:

#!/bin/bash
n=10

for i in {1..$n};  do
  echo $i 
done

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

for i in {1..${n}};  do
  echo $i 
done

for i in {1.."${n}"};  do
  echo $i 
done
现在输出为:

{1..10}
{1..10}
{1..10}
{1..10}
不是我想要的…:(

要澄清这个问题:


如何使用变量作为bash for循环中范围语法的限制?

不要使用
{…}
;使用C样式for循环

for ((i=1; i <= $n; i++)); do

for((i=1;i不要使用
{…}
;使用C样式for循环

for ((i=1; i <= $n; i++)); do

for((i=1;我感谢chepner。这解决了我的问题,并提供了一点关于预期此行为的背景。感谢chepner。这解决了我的问题,并提供了一点关于预期此行为的背景。