可能的重复:
我如何迭代bash中的一系列数字?
我试图打印" Hello World!"通过下面的代码10次,但仅打印一次。我在哪里缺少正确的语法?
RUNS=10
for RUN in {1..$RUNS}
do
echo "Hello World!"
done
您想进行支架扩展,但bash不进行双重扩展(它需要扩展$RUNS
)。您可以通过
for RUN in $(eval echo {1..$RUNS})
do
echo "Hello World!"
done
,但我建议您像瘟疫一样避免这种混乱,只是做
for RUN in $(seq 1 $RUNS)
do
echo "Hello World!"
done
或
for ((RUN=1; RUN<RUNS; RUN++))
do
echo "Hello World!"
done
这个问题包含您需要的所有答案
简而言之,我建议您使用:
RUNS=10
for RUN in $(seq 1 $RUNS)
do
echo "Hello World!"
done
因为它也可能在其他外壳上也可以使用。
如果要避免子壳的开销,则可以使用:
RUNS=10
i=0;
while [ $i -lt $RUNS ]
do
echo "Hello World!"
i=$(($i+1))
done
{a..b} 语法似乎不是代替变量
for ((i=0; i < $RUNS; ++i)); do echo "hello world"; done