for Bash for循环每次加倍步长值

jus*_*rld 1 bash for-loop

按照这个关于bash循环的基础教程,我编写了以下脚本:

#!/bin/bash
# since Bash v4

i=16
max=256

while [  $i -le $max ]; do 
     echo $i
     let i=i*2
done
Run Code Online (Sandbox Code Playgroud)

但既然我觉得这很可怕(我是一个纯粹的while仇恨者),有什么方法可以写出与此类似的东西:

#!/bin/bash
# since Bash v4

start = 16
max = 256

for i in {start..max..i*2}
do
     echo $i
done
Run Code Online (Sandbox Code Playgroud)

cod*_*ter 5

你可以使用一个for循环:

for ((i = 16; i <= 256; i = i * 2)); do
  echo "$i"
done
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

16
32
64
128
256
Run Code Online (Sandbox Code Playgroud)

  • 或许,除了引用"$ i"的扩展作为常规问题(以及处理像'IFS`中的数字这样的古怪角落案例)之外,这正是我所写的. (2认同)