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
为什么这段代码不执行 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