Seq 但乘以步骤而不是相加

Seq 但乘以步骤而不是相加

序列将数字序列打印到标准输出”,而且据我所知,它只能通过加法来增加计数器。

例如,

seq 0 3 10
0
3
6
9

告诉seq我们从 0 到 10,增量为 3。

有什么方法可以用乘法代替加法吗?

seq-mult一个会产生的赞扬

seq-mult 1 10 10000
1
10
100
1000
10000

答案1

作为 shell 脚本非常容易编程。

#!/bin/bash
i=$1
while [[ $i -le $3 ]]
do
  printf "%d\n" $i
  (( i *= $2 ))
done

这里绝对没有进行错误检查。 YMMV。

答案2

使用 for 循环你可以做类似的事情:

start=$1
incr=$2
end=$3
for ((i=start;i<=end;i*=incr)); do
  printf '%d\n' "$i"
  ((i==0)) && break
done

答案3

灵感来自多纳尔24的回答,我已经编写了自己的“配方”,它在 makefile 中工作,提供了MIN_INPUTMAX_INPUTSTEP已定义:

range=$(MIN_INPUT); \
max=$(MAX_INPUT);\
step=$(STEP);\
while [ $$range -le $$max ];\
    do\
        range=`expr $$range \* $$step`;\
    done 

相关内容