bash for 循环中的意外循环行为

Unexpected loop behaviour in bash for loop

为什么这段代码不执行 bash 中的 for 循环,而是打印它应该循环的内容?如何执行这样的for循环?

read N R 
for i in {0..$[(N-1)*R]..$R};do
echo $i;done

是的,代码看起来很糟糕,但它是针对最少字符数的代码挑战。

动态生成所需范围的一个想法:

read N R

for i in $(seq 0 ${R} $(( (N-1)*R )) )
do
    echo $i
done

并减少到最少的字符数:

read N R;for i in $(seq 0 $R $((N*R-R)));do echo $i;done

不过,一般来说,我可能会选择类似的东西:

$ cat ezrah
read N R

for (( i=0 ; i<= (N-1)*R ; i=i+R ))
do
    echo $i
done

几个样本运行:

$ ezrah
3 4
0
4
8

$ ezrah
6 3
0
3
6
9
12
15