Se você puder usar seq
, poderá fazer isso:
read -p "Please Enter the first number : " n1
echo "$n1"
read -p "Please Enter the second number, larger than the first : " n2
echo "$n2"
seq "$n1" "$n2"
Se você tem que fazer isso inteiramente no shell e pode usar um shell moderno como bash
, ksh
, zsh
etc (mas não ash
ou dash
ou similar estritamente POSIX shell), você poderia substitua o comando seq
por:
eval "printf '%s\n' {$n1..$n2}"
Você precisa usar eval
para a segunda versão porque as sequências do bash / ksh / etc esperam inteiros reais como {1..5}
, não variáveis como {$n1..$n2}
. eval
expande as variáveis para que seus valores reais sejam usados dentro da sequência {...}
.
se você quiser fazer isso com um loop e sem recursos extravagantes de bash / ksh / etc, você pode substituir as linhas seq
ou eval
por algo como:
c="$n1"
while [ "$c" -le "$n2" ] ; do
echo "$c"
c=$((c+1))
done
Isso funciona em qualquer shell compatível com POSIX, incluindo dash
e ash
, bem como bash
etc.