Iterating through a range of ints in ksh?

后端 未结 7 390
故里飘歌
故里飘歌 2020-12-30 22:51

How can I iterate through a simple range of ints using a for loop in ksh?

For example, my script currently does this...

for i in 1 2 3 4 5 6 7
do
            


        
相关标签:
7条回答
  • 2020-12-30 23:14

    Just a few examples I use in AIX because there is no range operator or seq, abusing perl instead.

    Here's a for loop, using perl like seq:

    for X in `perl -e 'print join(" ", 1..10)'` ; do something $X ; done
    

    This is similar, but I prefer while read loops over for. No backticks or issues with spaces.

    perl -le 'print "$_ " for 1..10;' | while read X ; do xargs -tn1 ls $X ; done
    

    My fav, do bash-like shell globbing, in this case permutations with perl.

    perl -le 'print for glob "e{n,nt,t}{0,1,2,3,4,5}"' | xargs -n1 rmdev -dl
    
    0 讨论(0)
  • 2020-12-30 23:18

    ksh93, Bash and zsh all understand C-like for loop syntax:

    for ((i=1; i<=9; i++))
    do
        echo $i
    done
    

    Unfortunately, while ksh and zsh understand the curly brace range syntax with constants and variables, Bash only handles constants (including Bash 4).

    0 讨论(0)
  • 2020-12-30 23:19

    While loop?

    while [[ $i -lt 1000 ]] ; do
        # stuff
       (( i += 1 ))
    done
    
    0 讨论(0)
  • 2020-12-30 23:25

    Curly brackets?

    for i in {1..7}
    do
       #stuff
    done
    
    0 讨论(0)
  • 2020-12-30 23:31

    seq - but only available on linux.

    for i in `seq 1 10`
    do 
        echo $i
    done
    

    there are other options for seq. But the other solutions are very nice and more important, portable. Thx

    0 讨论(0)
  • 2020-12-30 23:34

    on OpenBSD, use jot:

    for i in `jot 10`; do echo $i ; done;
    
    0 讨论(0)
提交回复
热议问题