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[*]}