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 per a loop repeteix una part 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:
-
Entra scripts mkdir (Més informació sobre mkdir aquí).
-
Entra scripts de cd (això canvia el directori a) guions ).
-
Entra nano examplen.sh (on n és l'exemple en què estàs treballant).
-
Introduïu el script.
-
Premeu CTRL + O per estalviar i CTRL + X per sortir.
-
Correr bash examplen.sh (de nou, amb n sent l'exemple amb el qual estàs treballant).
Com fer una bucle a través d'una llista
#! / bin / bashfor the number in 1 2 3 4 5doecho $ numberdoneexit 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 script. En un BASH "for" tot, les declaracions entre fer i fet es realitzen una vegada per cada element de la llista. A l'exemple anterior, la llista és tot el que ve després de la paraula in (és a dir, 1 2 3 4 5). Cada vegada que el iteració del bucle, el següent valor de la llista s'insereix a la variable especificada després de la paraula "per" . En el bucle anterior, es diu la variable 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: 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 / bashfor el número en {1..10} doecho "$ number" doneexit 0
Les regles són bàsicament les mateixes. Els valors després de la paraula " a " configureu la llista per recórrer 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, les declaracions entre fer i fet es realitzen. 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 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 / bashfor the number in {0..100..10} doecho "$ number" doneexit 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 i fet . 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: 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 / bashfor ((number = 1; number <100; number ++)) (if (($ number% 5 == 0)) thenecho "$ number is divisible per 5" fi} exit 0
El bucle comença establint el número de variable a 1 (número = 1 ). El circuit continuarà mantenint iteració, mentre que el valor d'un número és inferior a 100 ( número <100 ). El valor de número 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 de a número , la divideix en 5 i compara la resta amb 0. Si la resta és 0, el nombre es divisible per 5 i es mostra a la pantalla. Per exemple: Si voleu canviar la mida de l'etapa de la iteració, podeu modificar la secció de número + a la qual es pot canviar número = nombre + 2 , número = nombre + 5 , o número = nombre + 10 etc. Això es pot reduir encara més número + = 2 o número + = 5 . 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. El següent exemple mostra com convertir arxius d'àudio de MP3 a WAV: #! / bin / bashper al fitxer en ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" fet
La llista d'aquest exemple és cada fitxer amb l'extensió .MP3 a la carpeta actual i la variable a dossier . El mpg comanda converteix el fitxer MP3 en WAV. Tanmateix, és probable que hàgiu d'instal·lar-lo primer amb el vostre gestor de paquets.
Com fer bucle entre un punt d'inici i final
Com saltar els números en un rang
Un aspecte més tradicional a la recerca de bucle
Un exemple pràctic