Cómo crear una función bash que devuelva una matriz

Cómo crear una función bash que devuelva una matriz
Puede parecer a primera vista que devolver una matriz de una función de bash no es realista. Teniendo en cuenta todos los beneficios, puede ser útil llamar a múltiples métodos para construir matrices para dividir el proceso de recopilación de todos los parámetros apropiados para una llamada YAD.

Hay muchas razones por las cuales uno podría querer restaurar una matriz de bash:

  • Administrar la vida útil de las matrices es más simple porque se les asigna localmente.
  • Para el logro justo en el tiempo, la obtención de matrices de los métodos puede ayudar.
  • Para admitir técnicas de algoritmo de registro, los nombres de los métodos que devuelven las matrices se pueden descartar.

Puede creer que Bash pierde la capacidad de devolver las matrices de funciones. Sin embargo, eso no es exactamente correcto. Es posible mover la matriz resultante a un método por referencia, tomando señales de los desarrolladores de C/C ++. Dicha estrategia permite que el método continúe libre de referencias hacia una variable global. El siguiente artículo muestra instancias claras de este caso.

Ejemplo 1: devolver una matriz

Inicie sesión en su sistema Linux y abra el terminal de comando para continuar. Crearemos un archivo bash llamado "script.sh ”usando el tocar Comando para devolver la matriz usando la función bash. El guión es el siguiente:

$ touch script.mierda

Puede ver el archivo recién creado en el Hogar directorio. Abra este archivo y escriba el código adjunto en él como es. Aquí, estamos intentando crear una matriz asociativa a través de un argumento en un método de un pase de lista.

Inicialmente, hemos creado la función foo ().

Dentro de este programa, hemos eliminado el término "declarar", que es un comando bash preconfigurado que nos permite cambiar o personalizar los atributos, los métodos de la carcasa manchados a las variables y demostrar los valores de estos atributos dentro de los atributos dentro del el tramo de comando de la shell. Además, se puede usar para definir una variable larga. Por último, se usa para definir las variables.

Hemos agregado el valor "fooval" a la matriz "ARR".

La palabra clave "-a" se usa para crear el Nombres Matriz asociativa si se apoya. Debemos usar la lista/matriz como una variable global, lo que implica que solo un método, no un script, puede realizar esta acción.

También hemos creado otra matriz, llamada "Myarr", para su uso como referencia. Bash permite que el nombre de una variable relativa ARR sea diferente al nombre de la variable relativa myarr.

Después de eso, en la octava línea, hemos pasado la matriz "myarr" a la fiesta foo () funcionar como referencia.

En el pasado, usamos el bucle "para" para imprimir las matrices "ARR" y "Myarr" a la foo () función.

Ahora verificaremos el resultado de este código. Ejecutar el comando bash para ejecutar el código anterior. Puede ver que la matriz ha sido devuelta a la función y luego impresa.

$ Bash Script.mierda

Ejemplo 2: devolver otra matriz

Veamos otro ejemplo de devolución de matrices a una función. Abra su terminal de comando y cree un nuevo archivo llamado "OpenVPN.registro ”usando el tocar Comando, como sigue:

$ touch openvpn.registro

Ahora, abra el "OpenVPN.registrar el archivo y escribir el siguiente texto en este archivo, como se muestra. Guardar este archivo y cerrarlo.

Nuevamente, abra el shell de comando y cree otro archivo llamado "script.sh ", usando el tocar comandar para agregar el script bash al archivo.

$ touch script.mierda

A continuación, abra el "Script.archivo sh "y agregar el siguiente código en este archivo como es. Guarde y cierre este archivo. Este script utilizará un método que lea valores/cadenas de un documento y devuelve una matriz:

  • Declarando la matriz: clientes
  • Asignar la matriz devuelta del método a los clientes de matriz
  • Show Array: clientes

Veamos ahora un vistazo detallado al funcionamiento de este script.

  • Hemos declarado una gama global de "clientes" utilizando la palabra clave "declarar", seguido de "-a."
  • El readArray () la función se ha definido. En esta función, hemos declarado algunas variables locales. La variable local "matriz" está vacía, pero "i" y "j" se han definido con el valor 0 para ser utilizado como iteradores.
  • Usando el modo de lectura, leeremos el texto del archivo usando iteradores para incrementar los índices.
  • La línea "clientes [$ ((i ++))]+= $ línea;" se usa para agregar las líneas de texto a la variable de matriz de "clientes" definida globalmente.
  • Después de eso, "J ++" está saltando al siguiente índice.
  • La variable "$ 1" se usa para ahorrar y devolver la matriz que se acaba de crear desde el "OpenVPN.Archivo de texto de registro ".
  • En el exterior de la función, la cadena se ha declarado como "$ cadena" y se le ha dado una ruta de archivo como un valor.
  • Esta cadena ha sido pasada al readarray Funcionar como referencia para leer texto de este archivo.
  • Después de eso, la matriz de "clientes" se ha impreso, y todo el texto dentro de ella se ha mostrado en una línea.
  • Ahora, mostraremos un mensaje de que la matriz ya no está vacía.
  • El bucle "para" se ha utilizado para convertir el contenido de la matriz "clientes" en el tipo de matriz y declarar un índice para el contenido utilizando la declaración "Echo" $ i: $ clientes [$ i]."
  • Finalmente, mostramos un mensaje e imprimimos algunos valores de matriz convertidos por separado como una única posición indexada de una matriz.

Vamos a verificar ahora la salida de este script bash. Ejecute el comando bash para ejecutar el "script.archivo sh ". Como puede ver, la primera declaración de eco imprimirá todo el texto del "OpenVPN.Archivo de registro ", que se ha guardado en la matriz de" clientes "como una línea. La segunda instrucción ECHO mostrará el mensaje de cadena. La tercera declaración de eco mostrará la matriz de "clientes" en forma indexada, ya que se acaba de convertir. El cuarto mostrará un mensaje nuevamente. El final mostrará el contenido de la matriz de "clientes" individualmente.

Conclusión

Este artículo le mostró cómo devolver matrices (especialmente matrices asociativas) a una función utilizando el comando "declarar" incorporado con dos ejemplos. Espero que este artículo te ayude a comprender mejor este tema.