Manejo de Arreglos y Algoritmos en Shell Scripting

Arreglso en Shell

1. Formas de Definir Arreglos

  • Los arreglos se definen con paréntesis y sus elementos se acceden mediante índices numéricos que inician en 0. Pueden contener tanto cadenas como otros arreglos.
# Método A: Asignación directa
colores=(rojo verde azul)

# Método B: Índices explícitos
colores=([0]=rojo [1]=verde [2]=azul)

# Método C: Desde una lista de elementos
lista="rojo verde azul"
colores=($lista)

# Método D: Asignación por índice individual
colores[0]="rojo"
colores[1]="verde"
colores[2]="azul"

2. Tipos de Datos Soportados

  • Numéricos: enteros y flotantes
  • Cadenas de texto: se recomienda usar comilllas dobles o simples para evitar problemas con espacios. La separación de elementos se realiza por espacios.

3. Obtener la Longitud del Arreglo

numeros=(10 20 30 40 50)
tamanio=${#numeros[*]}
# También válido: ${#numeros[@]}

4. Listar Todos los Elementos

echo ${numeros[*]}
echo ${numeros[@]}

5. Acceder a un Elemento por Índice

elemento=${numeros[2]}
echo $elemento  # Muestra 30

6. Recorrer el Areglo

#!/bin/bash
valores=(100 200 300)
for valor in ${valores[@]}; do
    echo $valor
done

7. Obtener una Subcadena del Arreglo

datos=(a b c d e)
echo ${datos[@]}       # a b c d e
echo ${datos[@]:0:2}   # a b
echo ${datos[@]:1:3}   # b c d
echo ${datos[@]:2:3}   # c d e

8. Reemplazar Elementos

letras=(x y z)
echo ${letras[@]/y/w}   # x w z (copia temporal)
# Para modificar el arreglo original:
letras=(${letras[@]/y/f})
echo ${letras[@]}       # x f z

9. Eliminar Elementos o el Arreglo Completo

pares=(2 4 6 8)
unset pares             # Elimina el arreglo completo
echo ${pares[*]}        # Resultado vacío

pares=(2 4 6 8)
unset pares[1]          # Elimina el elemento en índice 1
echo ${pares[*]}        # 2 6 8

10. Agregar Nuevos Elementos

Método 1: Asignación directa por índice

frutas=(manzana pera)
frutas[2]=uva

Método 2: Usando la longitud del arreglo

frutas[${#frutas[@]}]=naranja

Método 3: Reasignación completa

frutas=("${frutas[@]}" kiwi mango)
# Importante: usar comillas dobles y @ para conservar espacios en elementos

Método 4: Operador += (requiere paréntesis)

frutas+=(fresa cereza)
# Los nuevos elementos deben ir entre paréntesis y separados por espacios

11. Pasar Arreglos a Funciones

Cuando se pasa un arreglo a una función, se debe desempaquetar y rearmar dentro de la misma para evitar perder la estructura.

procesar_datos() {
    # Reconstruir arreglo a partir de todos los argumentos
    nuevo_arr=($(echo $@))
    echo "Elementos recibidos: ${nuevo_arr[*]}"
}

# Ejemplo de uso
datos_origen=(10 20 30)
echo "Arreglo original: ${datos_origen[*]}"
procesar_datos ${datos_origen[*]}

Etiquetas: shell script arreglos bash Iteración funciones

Publicado el 7-9 00:51