#!zsh # # List numbers, eg. # enum 1 3 => 1 2 3 # or enum 3 1 => 3 2 1 # or enum 10 0 3 => 10 7 4 1 # or enum 0001 99 21 => 0001 0022 0043 0064 0085 # # Suitable for use in eg. "for" loops, like # for `enum 1 10` do ... # (( $# == 2 || $# == 3 )) || { print -u2 "Usage: $0 begin end [step]" ; return 1 } integer begin=$1 end=$2 step=${3:-1} if expr $1 : 0 then typeset -Z ${#1} n else if expr $2 : 0 then typeset -Z ${#2} n else integer n fi fi > /dev/null n=$begin if (( n < end )) then while (( n <= end )) do print $n (( n += step )) done else while (( n >= end )) do print $n (( n -= step )) done fi