Array Loops en Bash

    En este art铆culo, le mostraremos los diversos m茅todos para recorrer arreglos en Bash. Los bucles de matriz son tan comunes en la programaci贸n que casi siempre necesitar谩 usarlos en cualquier programaci贸n importante que realice. Para ayudar con esto, debe aprender y comprender los diversos tipos de matrices y c贸mo los recorrer谩, que es exactamente lo que presentamos en este art铆culo.

    Antes de continuar con el prop贸sito principal de este tutorial / art铆culo, aprendamos un poco m谩s sobre la programaci贸n con el shell Bash y luego mostraremos algunas construcciones de programaci贸n Bash comunes.

    Una breve introducci贸n al Bash Shell

    Shell es un t茅rmino de Unix para la interfaz de usuario interactiva con sistemas operativos. El shell es la capa de programaci贸n que comprende y ejecuta los comandos que ingresa un usuario. En algunos sistemas, el shell se denomina int茅rprete de comandos. B谩sicamente, cualquier cosa que pueda hacer con las herramientas de GUI OS en Linux, normalmente puede hacer lo mismo con un shell.

    La mayor铆a de los sistemas operativos tipo Unix vienen con un shell como el Intento shell, Bourne shell, C shell (csh) y KornShell. Sin embargo, estos shells no siempre vienen preinstalados con distribuciones populares de Linux como Ubuntu, Cent OS, Kali, Fedora, etc. Aunque el popular shell Bash se env铆a con la mayor铆a de distribuciones de Linux y OSX.

    El shell Bash es una versi贸n mejorada del antiguo shell Bourne, que fue uno de los primeros shell Unix / Linux en uso general por parte de la base de usuarios. Ten铆a caracter铆sticas limitadas en comparaci贸n con los shells de hoy, y debido a esto, la mayor parte del trabajo de programaci贸n se realizaba casi en su totalidad por servicios externos.

    Bash, que es un shell compatible con POSIX, simplemente significa segundoourne-unganancia shana. Originalmente se cre贸 como un reemplazo del shell Bourne y, por lo tanto, vino con muchas mejoras que no estaban disponibles en los antiguos shells.

    Para encontrar el tipo o versi贸n de Bash que su sistema operativo ha instalado, simplemente escriba el siguiente comando:

    $ echo $BASH_VERSION
    3.2.57(1)-release
    

    Secuencias de comandos de Shell con Bash

    Un script de shell es un archivo que contiene uno o m谩s comandos que escribir铆a en la l铆nea de comandos. En un script, estos comandos se ejecutan en serie de forma autom谩tica, al igual que un programa en C o Python. A continuaci贸n, se muestran algunos ejemplos de comandos comunes:

    • cat: Muestra contenido en un archivo o combina dos archivos juntos. El nombre original del comando ‘cat’ es ‘concatenar’
    • ls: Enumera archivos / carpetas en un directorio
    • pwd: Muestra la ruta de su directorio de trabajo actual
    • chmod: Modificar o cambiar los permisos de un archivo
    • chown: Cambia la propiedad de un archivo o programa de secuencia de comandos
    • mkdir: Crea un directorio
    • mv: Mover un archivo o carpeta de un directorio a otro
    • rm: Eliminar (eliminar) un archivo o directorio
    • cd: Cambia tu directorio de trabajo actual
    • exit: Cerrar o salir de una terminal

    Hay muchos m谩s comandos b谩sicos que no se mencionan aqu铆, sobre los que puede encontrar informaci贸n f谩cilmente dada la gran cantidad de documentaci贸n en Internet. Sin embargo, aprender los comandos b谩sicos anteriores le ense帽ar谩 mucho de lo que necesita saber.

    Puede observar a lo largo de este art铆culo que cada primera l铆nea de un script de shell comienza con un el asunto o hash-bang. Es un tipo especial de comentario que le dice al shell qu茅 programa usar para ejecutar el archivo. Para los scripts de shell, este es el #!/bin/bash l铆nea.

    Ahora que ha estado expuesto a algunos comandos Bash comunes, es hora de comprender c贸mo usar matrices y bucles. Y, finalmente, mostraremos algunos ejemplos del mundo real de c贸mo puede recorrer matrices en scripts Bash.

    Bucles en Bash

    “Loops”, o “looping”, es simplemente una construcci贸n en la que se ejecuta un evento particular o una secuencia de comandos hasta que se cumple una condici贸n espec铆fica, que generalmente es establecida por el programador. Tenemos tres tipos de bucles disponibles para nosotros en la programaci贸n Bash:

    • mientras
    • para
    • hasta
    Mientras bucle

    Si alguna vez ha programado antes en cualquier idioma, probablemente ya sepa acerca de los bucles y c贸mo puede usarlos para controlar el flujo de un programa o script adem谩s del if, elify else. El bucle le permite iterar sobre una lista o un grupo de valores hasta que se cumpla una condici贸n espec铆fica.

    A continuaci贸n se muestra la sintaxis de while lazo:

    while <list>
    do
        <commands>
    done
    

    La condici贸n dentro del while El bucle puede depender de variables declaradas previamente, seg煤n sus necesidades. Supongamos que hemos escrito un programa llamado count.sh. El programa del contador imprime los n煤meros del 0 al 10. Por lo tanto, nuestro programa del contador har谩 un “bucle” s贸lo del 0 al 10.

    #!/bin/bash
    
    count=0
    while [ $count -le 10 ]
    do
        echo "$count"
        count=$(( $count + 1 ))
    done
    

    La condici贸n aqu铆 es $count -le 10, que devolver谩 un true valor siempre que el $count variable es menor o igual que (-le) a 10. Cada vez que esta condici贸n vuelve true, los comandos entre do y done se ejecutan.

    Hasta bucle

    Adem谩s de while, tambi茅n podemos usar el until bucle que es muy similar al while lazo. La sintaxis del until bucle es el mismo que el while bucle, sin embargo, la principal diferencia es que la condici贸n es opuesta a la de while. Aqu铆 los comandos de bucle se ejecutan cada vez que la condici贸n falla o regresa false.

    #!/bin/bash
    
    count=0
    until [ $count -gt 10 ]
    do
        echo "$count"
        count=$(( $count + 1 ))
    done
    

    Aqu铆 el bucle se ejecuta cada vez $count no es mayor que (-gt) 10.

    En bucle

    Sint谩cticamente el for El bucle es un poco diferente al while o until bucles. Estos tipos de bucles manejan incrementar el contador por nosotros, mientras que antes ten铆amos que incrementarlo por nuestra cuenta.

    La sintaxis del for bucle en Bash es:

    #!/bin/bash
    
    for (( n=1; n<=10; n++ ))
    do
        echo "$n"
    done
    

    Dentro de la condici贸n de bucle le decimos en qu茅 n煤mero iniciar el contador (n=1), en qu茅 n煤mero finalizar el contador (n<=10) y cu谩nto incrementar el contador en (n++).

    Otra forma de usar este bucle es as铆:

    #!/bin/bash
    
    for user in Kate Jake Patt
    do
        echo "$user"
    done
    

    Aqu铆 ejecutamos el ciclo para cada instancia de cadena, que en este caso es “Kate”, “Jake” y “Patt”.

    Matrices en Bash

    En Bash, hay dos tipos de matrices. Est谩n las matrices asociativas y las matrices indexadas por n煤meros enteros. Los elementos de las matrices se denominan con frecuencia por su n煤mero de 铆ndice, que es la posici贸n en la que residen en la matriz. Estos n煤meros de 铆ndice son siempre n煤meros enteros que comienzan en 0.

    Los arreglos asociativos son un poco m谩s nuevos, ya que llegaron con la versi贸n de Bash 4.0.

    A continuaci贸n se muestra la sintaxis para declarar y usar una matriz indexada con n煤meros enteros:

    #!/bin/bash
    
    array=( A B C D E F G )
    echo "${array[0]}"
    echo "${array[1]}"
    echo "${array[2]}"
    echo "${array[3]}"
    echo "${array[4]}"
    echo "${array[5]}"
    echo "${array[6]}"
    

    En este art铆culo, nos centraremos en la matriz indexada con n煤meros enteros para nuestro tutorial de bucles de matriz, por lo que omitiremos cubrir las matrices asociativas en Bash por ahora, pero sepa que es bueno estar al tanto de su existencia.

    Bucle sobre matrices

    Ahora que hemos visto y entendido los comandos b谩sicos del shell Bash, as铆 como los conceptos b谩sicos de bucles y arreglos en Bash, sigamos adelante y veamos un script 煤til usando los bucles y arreglos juntos.

    En nuestro sencillo ejemplo a continuaci贸n, asumiremos que desea mostrar una lista de los usuarios registrados de su sitio web en la pantalla. La lista de usuarios se almacena en la variable users, que debe recorrer para mostrarlos.

    #!/bin/bash
    
    users=(John Harry Jake Scott Philis)
    for u in "${users[@]}"
    do
        echo "$u is a registered user"
    done
    

    Con esta sintaxis, recorrer谩 el users matriz, con cada nombre almacenado temporalmente en u. los [@] la sintaxis le dice al int茅rprete que esta es una matriz indexada sobre la que iteraremos.

    Hay varias formas en que podemos usar los bucles de matriz en la programaci贸n, as铆 que aseg煤rese de no limitarse a lo que ve aqu铆. Simplemente hemos mostrado los ejemplos m谩s b谩sicos, que puede mejorar y modificar para manejar su caso de uso.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *