Com escriure una BASH "per" Loop

Com s'utilitza el botó BASH "for" en scripts de shell

BASH (que significa Bourne Again Shell) és un llenguatge de script utilitzat per la majoria de sistemes operatius basats en Linux i UNIX.

Podeu executar comandaments BASH dins d'una finestra de terminal una després de l'altra o podeu afegir les ordres a un fitxer de text per produir un script de shell.

El millor d'escriure scripts de shell és que podeu executar-los una i altra vegada. Per exemple, imagineu que cal afegir un usuari a un sistema, establir els permisos i gestionar el seu entorn d'inici. Podeu escriure les ordres en un tros de paper i executar-les mentre afegiu usuaris nous o podeu escriure un únic script i només passar els paràmetres en aquest script.

Els llenguatges de script com BASH tenen construccions de programació similars que altres idiomes. Per exemple, podeu utilitzar paràmetres d'importació per obtenir informació del teclat i emmagatzemar-los com a variables. A continuació, podeu obtenir el script per realitzar una acció determinada en funció del valor dels paràmetres d'entrada .

Una part clau de qualsevol llenguatge de programació i scripting és la possibilitat d'executar la mateixa peça de codi una i altra vegada.

Hi ha diverses maneres de repetir el codi (també conegut com bucles). En aquesta guia, se us mostrarà com escriure un bucle "for".

A for loop repeteix una certa secció del codi una vegada i una altra. Són útils perquè una sèrie de comandes puguin continuar funcionant fins que es compleixi una condició particular, després de la qual cosa s'aturaran.

En aquesta guia, es mostrarà cinc maneres d'utilitzar el bucle for a dins d'un script BASH.

Abans de començar

Abans de començar amb els exemples de bucle, heu d'obrir una finestra de terminal i seguiu aquests passos:

  1. Introduïu les seqüències d'ordres mkdir ( més informació sobre mkdir aquí )
  2. Introduïu scripts de cd (això canvia el directori a les seqüències d' ordres )
  3. Introduïu nano examplen.sh (on n és l'exemple en què esteu treballant)
  4. Introduïu el script
  5. Premeu CTRL + O per desar i CTRL + X per sortir
  6. Executar bash examplen.sh (de nou, amb n és l'exemple amb el qual estàs treballant)

Com fer una bucle a través d'una llista

#! / bin / bash
per al número en 1 2 3 4 5
fer
eco $ number
fet
sortida 0

La manera BASH d'utilitzar els "for" loops és una cosa diferent de la manera en què la majoria d'altres llenguatges de programació i script compten amb "per a" bucles. Anem a trencar el guió ...

En un BASH "for" tot, les declaracions entre done i done es realitzen una vegada per cada element de la llista.

A l'exemple anterior, la llista és tot el que apareix després de la paraula (és a dir, 1 2 3 4 5).

Cada vegada que el iteració del circuit, el següent valor de la llista s'insereix a la variable especificada després de la paraula "for" . En el bucle anterior, la variable es diu número .

La instrucció echo s'utilitza per mostrar la informació a la pantalla.

Per tant, aquest exemple pren els números del 1 al 5 i els mostra un a un a la pantalla:

Com fer bucle entre un punt d'inici i final

El problema amb l'exemple anterior és que si voleu processar una llista més gran (diguem de l'1 al 500), és convenient que escriguin tots els nombres en primer lloc.

Això ens porta al segon exemple que mostra com especificar un punt d'inici i de finalització:

#! / bin / bash
per al número en {1..10}
fer
eco "$ number"
fet
sortida 0

Les regles són bàsicament les mateixes. Els valors després de la paraula " in" formen la llista a la iteració i cada valor a la llista es col·loca a la variable (és a dir, el número), i cada vegada que el iteració del circuit, es realitzen les declaracions entre do i done .

La diferència principal és la forma en què es forma la llista. Els claudàtors () bàsicament denoten un rang, i el rang, en aquest cas, és d'1 a 10 (els dos punts separen l'inici i el final d'un rang).

Aquest exemple, per tant, passa per cada número entre 1 i 10 i mostra el número a la pantalla de la manera següent:

El mateix bucle podria haver estat escrit així, amb sintaxi idèntica al primer exemple:

per al número en 1 2 3 4 5 6 7 8 9 10

Com saltar els números en un rang

L'exemple anterior mostra com fer un bucle entre un punt d'inici i un punt final, de manera que ara veurem com saltar els nombres del rang.

Imagineu que voleu fer un circuit entre 0 i 100, però només mostra cada desè número. El següent script mostra com fer només això:

#! / bin / bash
per al número en {0,100} 10}
fer
eco "$ number"
fet
sortida 0

Les regles són bàsicament les mateixes. Hi ha una llista, una variable i un conjunt d'instruccions que s'han de realitzar entre fer - ho i fer - ho . La llista d'aquesta vegada es mostra així: {0..100..10}.

El primer número és 0 i el número final és 100. El tercer nombre (10) és el nombre d'elements de la llista que es saltarà.

L'exemple anterior, per tant, mostra la següent sortida:

Un aspecte més tradicional a la recerca de bucle

La manera BASH d'escriure per als bucles és una mica estranya en comparació amb altres llenguatges de programació.

Tanmateix, podeu escriure un bucle per un estil semblant al llenguatge de programació C, com aquest:

#! / bin / bash
per ((número = 1; nombre <100; número + +))
{
si (($ number% 5 == 0))
llavors
eco "$ number is divisible per 5"
fi
}
sortida 0

El bucle comença establint el número de la variable a 1 (nombre = 1 ). El circuit continuarà mantenint iteració mentre que el valor d'un número és inferior a 100 ( nombre <100 ). El valor del nombre canvia afegint 1 després de cada iteració ( número ++ ).

Tot entre les claus es realitza a través de cada iteració del bucle.

El bit entre les claus comprova el valor d'un número , el divideix en 5 i compara la resta amb 0. Si la resta és 0, el nombre es divisible per 5 i després es mostra a la pantalla.

Per exemple:

Si voleu canviar la mida del pas de la iteració, podeu modificar la secció número + + per a ser nombre = número + 2 , número = nombre + 5 o número = nombre + 10, etc.

Això es pot reduir encara més al número + = 2 o al número + = 5 .

Un exemple pràctic

Per als bucles, podeu fer més que llistes de números de iteració. Realment podeu utilitzar la sortida d'altres ordres com a llista.

En el següent exemple es mostra com convertir arxius d'àudio de MP3 a WAV :

#! / bin / bash

La llista d'aquest exemple és cada fitxer amb l'extensió .MP3 de la carpeta actual i la variable és un fitxer .

La comanda mpg converteix el fitxer MP3 en WAV. Tanmateix, és probable que hàgiu d'instal·lar-lo primer amb el vostre gestor de paquets.