1

可能重复:
如何在 bash 中迭代一系列数字?

我正在尝试打印“Hello World!” 通过下面的代码 10 次,但它只打印一次。我在哪里缺少正确的语法?

RUNS=10

for RUN in {1..$RUNS}
do
    echo "Hello World!"
done
4

3 回答 3

2

这个问题包含您需要的所有答案

简而言之,我建议您使用:

RUNS=10
for RUN in $(seq 1 $RUNS)
do
    echo "Hello World!"
done

因为它也更有可能在其他 shell 上工作。

如果要避免子外壳的开销,可以使用:

RUNS=10
i=0;
while [ $i -lt $RUNS ]
do
    echo "Hello World!"
    i=$(($i+1))
done
于 2012-11-06T08:33:20.470 回答
2

你想做一个大括号扩展,但 bash 不做双扩展(它需要 expand $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
于 2012-11-06T08:38:22.560 回答
0

{A..B}语法似乎没有替换变量

for ((i=0; i < $RUNS; ++i)); do echo "hello world"; done
于 2012-11-06T08:35:14.577 回答