Com utilitzar BASH per a Loop



Proveu El Nostre Instrument Per Eliminar Problemes

Un dels trucs més bàsics a l’hora d’escriure scripts bash consisteix en fer un bucle perquè pugueu executar una determinada tasca automàticament diverses vegades. Finalment, el bucle assolirà una condició de prova predeterminada i de sobte deixarà d’executar-se. Bucles com aquests funcionaran perfectament a bash a Linux i macOS, així com a l'intèrpret d'ordres bash a Windows 10 i fins i tot a les diverses versions de FreeBSD. Naturalment, podeu escriure qualsevol ordre que preferiu en qualsevol bucle i mantenir qualsevol procés durant el temps que vulgueu. Tot i que escriurem alguns bucles extremadament senzills, podeu utilitzar aquestes habilitats per crear qualsevol tipus de script que vulgueu.



Hi ha moltes maneres d’escriure un script, però per a aquesta discussió suposarem que heu obert un indicador d’ordres, ja sigui cercant el terminal al Dash, fent-hi clic als menús KDE, MATE, LX o Whisker o mantenint premuts Ctrl, Alt i T alhora. Tot i que parlarem de vi / vim i nano com a editors, la qüestió de quin editor utilitzar és bastant personal i podeu treballar amb qualsevol cosa que us sembli còmode.



Mètode 1: el bucle de fins

Potser el bucle més bàsic de bash és el bucle until. Continuarà executant ordres fins que es compleixi la condició de prova que heu establert. Suposarem que heu utilitzat nano o vi per obrir un fitxer inexistent anomenat until.sh i que esteu a punt per inserir-hi text nou. Simplement, farem alguna cosa que compti fins a 20 al vostre terminal per facilitar-ho al principi.



Comenceu escrivint el següent:

#! / bin / bash

n = 0



fins a [$ n -gt 20]

fer

echo $ n

((n ++))

fet

Si feu servir nano, deseu-lo mantenint premuda la tecla Ctrl i, a continuació, pressionant O i finalment X per sortir. Els usuaris de vi voldran prémer escape i, a continuació, escriviu: wq per desar i sortir.

Tipus següent chmod + x fins a Bucle a la pantalla per fer-lo executable i, a continuació, escriviu ./fins aLoop per executar-lo. Un cop s’executi, el bucle continuarà imprimint nous números al vostre terminal fins que la variable n arribi a 20.

Per cert, la primera línia indica al vostre entorn quin intèrpret d'ordres s'ha de carregar quan es treballa amb aquests scripts. Alguns programadors aconsellen utilitzar sempre #! / Bin / sh per assegurar-se que el vostre script compleix certs estàndards POSIX, però aquests scripts senzills no haurien de tenir cap problema en executar-se a la gran majoria dels sistemes moderns.

Mètode 2: el for Loop

Un bucle for examina tots els elements d'una llista donada i, a continuació, realitza un conjunt determinat d'ordres en aquesta llista. En farem un que imprimeixi alguns noms de sistemes operatius, però recordeu que podríeu fer qualsevol cosa amb això si voleu.

Escriviu qualsevol nano forLoop o bé nosaltres per a Bucle a l’indicador d’ordres i comenceu a introduir aquest script següent. Els usuaris de vi hauran d’entrar al mode d’inserció abans de fer-ho.

#! / bin / bash

unices = ’GNU / Linux FreeBSD OpenBSD NetBSD Solaris OpenIndiana Darwin HP-UX Minix’

per a unix a $ unices

fer

echo $ unix

fet

Torneu a desar el fitxer utilitzant el mètode Ctrl + O i Ctrl + X en nano o el mètode Esc then: wq a vi abans d’emetre l’ordre. chmod + x forLoop per fer-lo executable. Un cop ho tingueu, executeu-lo escrivint ./forLoop a la pantalla. El bucle for obliga l'ordre echo a treballar en cadascun dels elements de la variable unices al seu torn. Podeu, una vegada més, substituir aquesta llista per qualsevol argument i substituir echo per qualsevol ordre per automatitzar processos llargs.

Mètode 3: el bucle while

Comenceu a editar un tercer fitxer anomenat whileLoop mitjançant nano, vi o qualsevol altre editor que vulgueu utilitzar. Si preferiu utilitzar un editor de text gràfic, en realitat podríeu fer-ho també amb qualsevol d'aquests projectes sempre que us assegureu de posar el fitxer al mateix directori que esteu treballant des de l'indicador d'ordres. .

Dins d’aquest fitxer, voldreu afegir les línies:

#! / bin / bash

n = 0

mentre que [$ n -le 20]

fer

echo $ n

((n ++))

fet

Deseu el fitxer de la mateixa manera que heu desat els altres i, a continuació, sortiu de l'editor de text. Un cop hàgiu sortit, emeteu l'ordre chmod + x whileLoop per permetre-ho executar-lo i després executar-lo ./ WhileLoop per executar-lo. Veureu la mateixa sortida que va sortir de l'script untilLoop del primer mètode, ja que compta de 0 a 20 en més que probablement una fracció de segon.

Aquesta és una demostració excel·lent del fet que hi ha més d’una manera de fer coses sempre que es treballa amb bucles d’aquesta manera. Tot i que tècnicament no hi ha cap manera errònia de fer-ho, probablement us trobareu amb autors de guions que afirmen que heu d’escriure els vostres guions més a prop de la manera com fa el llenguatge de programació C o, de manera alternativa, altres us poden suggerir que no ho feu. Sincerament, probablement hi ha moltes maneres correctes de resoldre un problema.

No dubteu a suprimir els vostres scripts un cop hàgiu acabat de practicar-los.

3 minuts de lectura