“Conocimiento Sistemas>unix

¿Cómo se usa matrices en Unix?

2015/9/17
Las conchas Unix (como Bash, Zsh, SH) no tienen matrices de la misma manera que los idiomas de nivel superior como Python o C ++. Manejan las matrices de una manera menos estructurada, generalmente utilizando cadenas separadas por espacios en blanco o técnicas especiales. Así es como puede trabajar con estructuras similares a la matriz en diferentes contextos de Shell Unix:

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.

unix
Definición de un sistema operativo Unix
¿Qué es Sha en Unix?
¿Por qué llamaron a Unix?
Cómo calcular Unix Tiempo
¿Qué hace el comando CAT en Linux?
Cada directorio de UNIX tiene al menos dos enlaces duros por qué?
¿Qué es el comando pipe en Unix?
¿Qué es ROM y ejemplo?
Conocimiento de la computadora © http://www.ordenador.online