我正在尝试打印“Hello World!”通过下面的代码10次,但它只打印一次。我在哪里错过了正确的语法?
RUNS=10
for RUN in {1..$RUNS}
do
echo "Hello World!"
done
答案 0 :(得分:2)
This question contains all the answers you need
简而言之,我建议您使用:
RUNS=10
for RUN in $(seq 1 $RUNS)
do
echo "Hello World!"
done
因为它也可能适用于其他shell。
如果您想避免子shell的开销,可以使用:
RUNS=10
i=0;
while [ $i -lt $RUNS ]
do
echo "Hello World!"
i=$(($i+1))
done
答案 1 :(得分:2)
你想做一个大括号扩展,但是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
答案 2 :(得分:0)
{A..B} 语法似乎没有替换变量
for ((i=0; i < $RUNS; ++i)); do echo "hello world"; done