【问题标题】:Unexpected loop behaviour in bash for loop [duplicate]bash for循环中的意外循环行为[重复]
【发布时间】:2021-03-02 05:31:13
【问题描述】:

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

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

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

【问题讨论】:

  • 你读的是两个变量N和R吗?
  • 出于代码挑战目的,您可能需要考虑eval 'read N R; for i in {0..$[(N-1)*R]..$R}; do echo $i; done'

标签: bash loops for-loop syntax


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多