Ordenação de Listas
Segue shell que ordena a lista em ordem crescente.
Descrição
Segue shell que ordena a lista em ordem crescente.
#!/bin/ksh
clear
typeset -i i=0
echo "Digite 5 numeros inteiros fora da sequencia!"
while (( $i == 0 )); do
echo "Digite primeiro numero"
read valor[0]
echo "Digite segundo numero"
read valor[1]
echo "Digite terceiro numero"
read valor[2]
echo "Digite quarto numero"
read valor[3]
echo "Digite quinto numero"
read valor[4]
if((${valor[0]} < ${valor[1]} && ${valor[1]} < ${valor[2]} && ${valor[2]} < ${valor[3]} && ${valor[3]} < ${valor[4]})); then
echo "Sequencia ordenada digite novamente os valores"
else
i=$i+1
fi
done
typeset -i i=0
typeset -i j=0
typeset -i temp=0
while (( $i < 4 )); do
while (( $j < 4 )); do
if ((${valor[$j+1]} < ${valor[$j]} )); then
temp=${valor[$j]}
valor[$j]=${valor[$j+1]}
valor[$j+1]=$temp
fi
j=$j+1
done
i=$i+1
j=0
done
x=0;
while [ $x != ${#valor[@]} ]; do
echo "* "${valor[$x]}" sequencia ordenada "
let "x = x +1"
done
Lembre-se que o poder do Bash está no fácil acesso aos programas externos:
echo 'Digite numeros separados por espaço:'
read -a array
ordered=`echo ${array[@]} | tr ' ' '\n' | sort -n | tr '\n' ' '`
echo ${ordered}
As duas linhas acima fazem o mesmo trabalho e funcionam para listas de tamanho arbitrário.
Abraço!