Script para mover los elementos vacíos de un array al final del mismo

Teniendo el código del script para mover los elementos vacíos de un array al principio del mismo, es sencillo modificarlo para mover los elementos vacíos al final:

#!/bin/bash
#
# moveemptyvaluestoend: Mover los elementos vacíos de un script al final del mismo
# autor: Esteban M. Navas Martín
# fecha: 08/01/2020

# definimos el array
numeros=(" " 5 1 3 " " 2 " " 4 " ")

# mostramos los elementos del array
for elemento in "${numeros[@]}"; do
  echo "[${elemento}]"
done
echo

# movemos los elementos vacíos al final
for ((i=1; i < ${#numeros[@]}; i++)); do
  for ((j=0; j < i ; j++)); do
    if [ "${numeros[$j]}" = " " ]; then
       temp=${numeros[$j]}
       numeros[$j]=${numeros[$i]}
       numeros[$i]=$temp
    fi
  done
done

# volvemos a mostrar los elementos del array
for elemento in "${numeros[@]}"; do
  echo "[${elemento}]"
done

Al comienzo del script, definimos un array de pruebas con sus valores:

numeros=(" " 5 1 3 " " 2 " " 4 " ")

A continuación mostramos el contenido del array, movemos los elementos vacíos al final y volvemos a mostrarlo.

Veamos un ejemplo de ejecución:

bash moveemptyvaluestoend
[ ]
[5]
[1]
[3]
[ ]
[2]
[ ]
[4]
[ ]

[5]
[1]
[3]
[2]
[4]
[ ]
[ ]
[ ]
[ ]

Aunque lo hemos utilizado para mover elementos vacíos, podría servirnos para mover cualquier otro elemento.

Be the first to comment

Por favor acceder para comentar.