Jaw*_*ser 2 variables bash for-loop
如果我创建一个像这样的 bash 循环,使用文字数字,一切都按预期工作:
#!/bin/bash
for i in {1..10}; do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
输出是:
1
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)
但是如果我想在变量中使用上限,我似乎无法正确使用。这是我的四次尝试:
#!/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
Run Code Online (Sandbox Code Playgroud)
现在的输出是:
{1..10}
{1..10}
{1..10}
{1..10}
Run Code Online (Sandbox Code Playgroud)
不是我想要的... :(
要清楚这个问题:
如何在 bash for 循环中使用变量作为范围语法的限制?
不要使用{...}; 使用 C 风格的 for 循环。
for ((i=1; i <= $n; i++)); do
Run Code Online (Sandbox Code Playgroud)
大括号扩展发生在参数扩展之前,因此如果不使用eval. 这也更有效,因为您不需要在循环开始之前生成可能很大的索引列表。