10 exemple de bucle Bash cool și minunate

10 Exemple De Bucle Bash Cool Si Minunate



În limbajul de programare, există în principal trei tipuri de bucle (for, while și until). Toate cele trei tipuri de bucle sunt importante în moduri diferite. Nu există o mare diferență între buclele while și until, dar bucla for funcționează destul de diferit față de aceste două. De aceea, puteți folosi aceste bucle pentru a crea scripturi interactive ca utilizator bash.

Prin urmare, învățarea exemplelor de bash vă poate ajuta să vă îmbunătățiți abilitățile în crearea de scripturi. Așadar, în acest tutorial, vom include 10 exemple grozave și minunate de bucle bash pe care le puteți încerca pentru a vă îmbunătăți abilitățile de scripting.







10 exemple de bucle Bash cool și minunate

În această secțiune, vom explica diverse exemple și abordările pe care le-am folosit în bucle.



Comandă Seq cu buclă în Bash

Puteți utiliza comanda seq în bucla for pentru a crea secvența de numere. De exemplu, aveți un script bash „File.sh” care conține următorul cod:



#!/bin/bash
pentru A în $ ( secv 5 Două 25 )
do
ecou „numere de $A sunteți'
Terminat





Veți obține următorul rezultat după executarea scriptului în terminal:

. / fişier.sh




Redenumiți fișierele folosind bucla

Folosind un script bash, puteți folosi buclele for pentru a redenumi mai multe fișiere. De exemplu, aveți mai multe fișiere .txt și doriți să adăugați data curentă cu numele. Deci, iată exemplul de script pe care îl puteți folosi:

#!/bin/bash
pentru A în $ ( ls * .txt ) ; do
mv $A ( nume de bază $A .txt ) _$ ( Data % d % m % ) .txt
Terminat


Acum, puteți rula scriptul și va schimba numele tuturor fișierelor .txt adăugând data curentă:

. / MyFile.sh



În mod similar, puteți modifica extensiile unui fișier printr-un singur script. Deci, să schimbăm extensia .txt în .sh prin următorul script:

#!/bin/bash
pentru fişier în * .txt; do
mv -- ' $file ' „{file%.txt}.sh”
Terminat

După ce executați scriptul în terminal, veți obține fișierele .sh și nu .txt:

. / MyFile.sh


Buclă For infinită în Bash

Când nu este definită nicio condiție de terminare în buclă, se numește buclă infinită. În acest exemplu de buclă Bash, ne vom uita la bucla infinită for din bash. Următoarea buclă for infinită este definită de un punct și virgulă dublu ( ; ; ) și nu conține nicio parte inițială, de acțiune sau de terminare.

Scriptul de mai jos va continua până când apăsați Ctrl+C sau tastați „închidere” ca intrare. Acest script va tipări fiecare număr de la 10 la 50 care este introdus. În caz contrar, se va imprima „numărul este în afara intervalului”.

#!/bin/bash
#buclă infinită
pentru ( ( ; ; ) )
do
ecou „Introduceți un număr între 10 și 50”
citit n
dacă [ $n == 'părăsi' ]
apoi
ecou 'terminat'
Ieșire 0
fi
dacă ( ( $n < 10 || $n > cincizeci ) )
apoi
ecou „Numărul este în afara intervalului”
altfel
ecou „Numărul este $n '
fi
Terminat

Am dat 45 și 23 de intrări valide pentru scriptul de mai sus. După aceea, imprimăm 2 ca intrare, care spune în ieșire că „numărul este în afara intervalului”. După aceea, pentru a închide scriptul, scriem ieșire ca intrare. Aici puteți apăsa și Ctrl+C pentru a părăsi bucla infinită.

Bucla cu trei expresii în Bash

Din denumirea buclei cu trei expresii se știe că aceasta cuprinde trei expresii, numite și expresii de control. Prima expresie (EXP1) este inițializatorul, a doua expresie (EXP2) este testul sau condiția buclei, iar a treia expresie (EXP3) este expresia/pasul de numărare. Să rulăm o buclă cu trei expresii în bash:

#!/bin/bash
pentru ( ( n = 5 ; n > = 1 ; n-- ) )
do
ecou 'Carte $n '
Terminat

La rularea scriptului de mai sus, veți obține următoarea ieșire.

Buclă cu mai multe condiții

Am folosit bucla până cu mai multe condiții în următorul exemplu de buclă bash. În acest script, am luat „m” și „n”, două variabile ale căror valori sunt 20, respectiv 10, și am păstrat limita de 15. Aici am pus condițiile „m” și „n” împreună în buclă, în care bucla va rula până când valoarea lui „m” este mai mică decât limita și „n” este mai mare decât limita.

#!/bin/bash
limită = cincisprezece
m = douăzeci
n = 10
pana cand [ [ $m -lt $limită || $n -gt $limită ] ] ;
do
ecou „Dacă M = $m atunci N = $n '
( ( m-- ) )
( ( n++ ) )
Terminat

Puteți vedea că rularea scriptului de mai sus va rula până când valorile „m” și „n” ajung la același nivel.

Citiți fișierul în Bash

În bash, puteți citi conținutul unui fișier în mai multe moduri. În acest exemplu de buclă bash, vom citi conținutul fișierului prin numele fișierului. Putem folosi următorul script pentru a citi fișierul în bash:

#!/bin/bash
ecou „Conținutul fișierului introdus este:”
in timp ce
citit linia
do
ecou $line
Terminat < ~Documente / Linuxhint.txt

După rularea scriptului de mai sus, puteți citi întregul conținut al fișierului introdus.

Scrierea într-un fișier

Puteți folosi buclele din script pentru a edita un fișier direct din terminal. De exemplu, dacă avem un fișier txt „Example.txt” și dorim să adăugăm câteva informații, atunci putem folosi următorul script:


Dacă rulați scriptul de mai sus, vă va cere să introduceți detaliile:


Odată ce ați introdus detaliile, vă rugăm CTRL + D pentru a salva fișierul și CTRL + Z pentru a finaliza procesul cu succes.

Întrerupeți și continuați bucla de instrucțiuni în Bash

În bash, puteți continua declarația de buclă după pauză. Instrucțiunea break iese din buclă și apoi trece controlul următoarei instrucțiuni date. Iterația numărul doi începe după ce iterația curentă este omisă cu aceeași instrucțiune continue.

#!/bin/bash
pe unu = 16
pana cand fals
do
( ( pe unu-- ) )
dacă [ [ $num -echivalentul 13 ] ]
apoi
continua
elif [ [ $num - cel 4 ] ]
apoi
pauză
fi
ecou „LinuxHint= $num '
Terminat

În următorul script bash, puteți vedea că atunci când „num” este egal cu 13, omite restul corpului buclei și trece la următoarea iterație. În mod similar, bucla se va întrerupe atunci când „num” este mai mic sau egal cu 4.


Scriptul de mai sus arată că bucla începe la 15, se întrerupe la 13 și continuă până la 5.

Calcularea unei medii în Bash

Puteți calcula media rulând scriptul într-o buclă bash. În aceasta, utilizatorul poate calcula media numerelor dintr-un interval definit. Următorul script calculează media intrărilor furnizate de utilizator.

#!/bin/bash
semne = '0'
IN MEDIE = '0'
SUMĂ = '500'
PE UNU = '5'
in timp ce Adevărat ; do
ecou -n „Introduceți marcajele sau apăsați „q” pentru a anula” ; citit semne;
dacă ( ( ' $marke ' < '0' ) ) || ( ( ' $marke ' > '100' ) ) ; apoi
ecou „Vă rugăm să introduceți notele”
elif [ ' $marke ' == 'q' ] ; apoi
ecou „Notele medii sunt: MEDIE USD %'
pauză
altfel
SUMĂ =$ [ SUMA $ + $marke ]
PE UNU =$ [ $NUM + 1 ]
IN MEDIE =$ [ SUMA $ / $NUM ]
fi
Terminat

Dacă intrarea nu se încadrează în interval, este tipărit un mesaj că „Vă rugăm să introduceți marcajele”. Când utilizatorul apasă „q” după introducerea tuturor notelor, scriptul calculează media aproximativă a tuturor numerelor introduse.

Când scriptul de mai sus este rulat, rezultatul dvs. va fi ceva de genul acesta.

Citiți argumentele liniei de comandă în Bash

În bash, puteți citi argumente dintr-o singură linie de comandă folosind bucle. Scriptul imprimă valorile argumentelor formatate. Rulăm argumente de linie de comandă în bash folosind o buclă while în următorul script. Prin aceasta, veți imprima valoarea pasând opțiunea argument value valid cu ajutorul unei singure comenzi.

#!/bin/bash
in timp ce getopts N:F:M: OPT
do
caz ' ${OPT} '
în
N ) Nume = ${OPTARG} ;;
F ) numele tatălui = ${OPTARG} ;;
M ) numele mamei = ${OPTARG} ;;
* ) ecou 'Invalid'
Ieșire 1 ;;
esac
Terminat
printf 'Nume: $nume \n Numele tatălui: $numele tatălui \n Numele mamei: $numele mamei \n '

Astfel, puteți imprima valorile argumentelor formatate în rezultat rulând scriptul de mai sus într-un bash.

Încheierea

Așadar, acestea au fost informațiile scurte despre cele 10 exemple grozave și minunate de bucle bash pe care le puteți învăța. Am folosit diferite tipuri de bucle pentru a crea cu ușurință scriptul interactiv. Mai mult, am explicat și abordările de bază utilizate în exemplele de mai sus. Dacă aveți detalii aprofundate despre buclele din bash, vă rugăm să vizitați site-ul nostru oficial pentru a afla mai multe.