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

He escrito un pequeño script que sirve para ilustrar cómo mover los elementos vacíos de un array al comienzo del mismo:

#!/bin/bash
#
# moveemptyvaluestobegin: Mover los elementos vacíos de un script al comienzo 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 comienzo
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 comienzo y volvemos a mostrarlo.

Veamos un ejemplo de ejecución:

bash moveemptyvaluestobegin 
[ ]
[7]
[5]
[1]
[3]
[ ]
[2]
[ ]
[4]

[ ]
[ ]
[ ]
[7]
[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.