#!/bin/sh #-----[ usage ]--------------------------------------------- function usage () { echo "Usage : ${0} min max [step [iter]]"; echo "Arguments : "; echo " * min : value minimal"; echo " * max : value maximal"; echo " * step : step between two value. If no present, step = \"+1\""; echo " * iter : choose the Nième value"; exit; } #-----[ range ]--------------------------------------------- function range () { declare a=${1}; declare b=${2}; declare step=${3}; while test ${a} -lt ${b}; do echo ${a}; a=$((${a} ${step})); done if test ${a} -eq ${b}; then echo ${a}; fi; } #-----[ range_max ]----------------------------------------- function range_max () { declare a=${1}; declare b=${2}; declare step=${3}; declare iter=${4}; while test ${a} -lt ${b} -a ${iter} -gt 1; do a=$((${a} ${step})); iter=$((${iter}-1)); done; if test ${a} -eq ${b}; then echo ${a}; fi; if test ${iter} -eq 1; then echo ${a}; fi; } #-----[ main ]---------------------------------------------- function main () { # create operande case ${#} in 2) range ${*} "+1";; 3) range ${*} ;; 4) range_max ${*} ;; *) usage ${*} esac } #-----[ Corps ]--------------------------------------------- main ${*}