1. Cadenas separadas por espacios en blanco:
Este es el método más simple. Básicamente, almacena elementos como una sola cadena, separada por espacios (u otros delimitadores que elija). Acceder a elementos individuales requiere manipulación de cadenas.
`` `Bash
my_array ="Apple Banana Cherry"
Acceder al primer elemento (suponiendo separación de espacio):
First_element ="$ {my_array %% *}" #removes todo desde el primer espacio en adelante.
echo "$ First_Element" # Salida:Apple
Acceder al segundo elemento:
Second_element ="$ {my_array #*}" #removes todo hasta el primer espacio.
Second_element ="$ {Second_element %% *}" #removes todo desde el primer espacio en adelante
echo "$ Second_element" # Salida:Banana
#Iiterating (menos eficiente):
por fruta en $ my_array; hacer
Echo "$ fruta"
hecho
`` `` ``
Limitaciones: Este enfoque es propenso a errores si los elementos de matriz contienen espacios en sí mismos.
2. Uso de matrices en bash (y otros conchas con soporte de matriz):
Bash (y algunas otras conchas modernas) proporcionan un soporte de matriz más robusto.
`` `Bash
declare una matriz
my_array =("Apple" "Banana" "Cherry")
Acceso a elementos:
echo "$ {my_array [0]}" # Salida:Apple
echo "$ {my_array [1]}" # Salida:Banana
Obtención de la longitud de la matriz:
echo "$ { # my_array [@]}" # Salida:3
iterando:
para i en "$ {! my_array [@]}"; hacer #iterate a través de índices
echo "$ {my_array [i]}"
hecho
o iterar directamente a través de elementos:
para fruta en "$ {my_array [@]}"; hacer
Echo "$ fruta"
hecho
#Elementos de admisión:
my_array+=("fecha")
echo "$ {my_array [3]}" #output:fecha
#Pendiendo a la matriz:
my_array+=(uva naranja)
#Elementos de referencia (menos sencillo, requiere desplazamiento):
Unset 'my_array [1]' #removes elemento en el índice 1 (plátano)
#Note que los índices no cambian automáticamente. No hay un cambio incorporado después de la eliminación.
Imprima la matriz modificada:
para fruta en "$ {my_array [@]}"; hacer
Echo "$ fruta"
hecho
`` `` ``
Consideraciones importantes:
* Citando: Siempre cotice las variables de matriz (por ejemplo, `" $ {my_array [@]} "`) para evitar la división de palabras y el globo, lo que puede conducir a un comportamiento inesperado. Esto es especialmente crítico cuando los elementos de matriz pueden contener espacios o caracteres especiales.
* índice 0: Las matrices en Bash están indexadas por 0, lo que significa que el primer elemento está en el índice 0.
* específico de la concha: La sintaxis y las características disponibles para matrices pueden variar ligeramente dependiendo del caparazón específico que esté utilizando (bash, zsh, ksh, etc.).
3. Uso de herramientas de línea de comandos para operaciones similares a la matriz:
Para manipulaciones de matriz más complejas (clasificación, filtrado, etc.), a menudo le resultará más eficiente usar utilidades de línea de comandos externos como 'Awk`,' Sed` o `Sort '. Estas herramientas se destacan en el procesamiento de texto, que se puede adaptar para funcionar con datos estructurados como cadenas delimitadas.
Por ejemplo, para ordenar los elementos de una cadena separada por espacios en blanco:
`` `Bash
my_array ="Apple Banana Cherry"
echo "$ My_array" | tr '' '\ n' | ordenar | tr '\ n' ''
`` `` ``
En resumen, si bien las conchas UNIX no tienen estructuras de matriz incorporadas y ricas como otros idiomas, el soporte de matriz de Bash es adecuado para muchas tareas. Para manipulaciones complejas, considere aprovechar el poder de las utilidades de procesamiento de texto. Recuerde citar siempre sus variables de matriz correctamente para evitar posibles errores.