Wéi schreiwen e BASH "fir" Loop

Wéi benotzt de BASH "fir" an d'Shell-Skripte

BASH (wat fir Bourne Again Shell steet) ass eng scripting Sprooch, déi vun de meeschte Linux- a UNIX-baséiert Betriebssystemen benotzt.

Dir kënnt BASH Kommandë bannent enger Terminalfenster nom zweeten opmaachen oder Dir kënnt d'Befehre un eng Textdatei addéieren fir e Shellskript ze produzéieren.

Déi gutt Saach iwwert Schreiwtalskriisën ass datt Dir se erëm an erëm eroflueden kann. Zum Beispill virstellen, Dir musst e Benotzer en System hunn, Äert Permisiounen hunn an hir Startchance verwalten. Dir kënnt d'Befehre op e Pabeier opschreiwen an ze lafen, wann Dir nei Benotzer schafft oder Dir kënnt e klenge Skript schreiwen an nëmmen Parameteren an deem Skript passen.

Skriptë Sproochen wéi BASH hunn ähnlech Programméierungsstrukturen wéi aner Sproochen. Zum Beispill kënnt Dir Importparameter benotze fir de Input vun der Tastatur ze kréien an ze reservéieren als Variablen. Dir kënnt de Skript unzefänken fir eng gewësse Aktioun auszeféieren, baséiert op de Wäert vun den Parameteren .

E Schlësselelement vun enger Programméierungs- a Skriptspraxis ass d'Fähigkeit, ëmmer erëm erauszekréien.

Et ginn e puer Weeër fir de Code ze widderhuelen (och Loops genannt). An dësem Guide fannt Dir wéi Dir eng "fir" Loop schreift.

A fir d' Loop dauert e gewëssen Deel vum Code ëmmer a méi. Si sinn nëtzlech fir datt eng Rei vu Befehle lafen ze loossen bis eng speziell Zoustëmmung erfëllt ass a wéi se se ophalen.

An dësem Guide fannt Dir fënnef Weeër fir d'Loopen innerhalb e BASH-Skript ze benotzen.

Éischt Start Fortsetzung

Ier Dir mat den Beispiller fir Loopengelëschten ugefaang hues, musst Dir eng Termin window eroflueden a folgend Schrëtt maachen:

  1. Maacht mkdir Scripte ( léieren méi iwwer mkdir hei )
  2. Gitt Cd Skripts (dat ësst Verknüpfung vum Verzeichnis op Skripte )
  3. Gebe dech an nano examplen.sh (wou n d'Beispill ass, wat Dir schafft)
  4. Gitt d'Skript op
  5. Dréckt CTRL + O fir ze retten a CTRL + X ze rauszéien
  6. Läif bash examplen.sh (nees mat n dem Beispill Dir schafft mat)

Wéi Loop Duerch eng Lëscht

#! / bin / Bash
fir Zuel an 1 2 3 4 5
maachen
Echo $ number
gemaach
Ausfahrt 0

De BASH-Wee fir "For" Loopen ze benotzen ass e bësschen aner wéi déi meescht aner Programméierungs- a Skriptersproochen "fir" Loopengkeeten. Loosst eis de Skript daueren ...

An e BASH "fir" Loop alles, d'Erklärungen tëschent do a gemaach ginn eemol fir all Element an der Lëscht gemaach.

Am obewege Beispill ass d'Lëscht alles wat nom Wuert geschitt ass (dh 1 2 3 4 5).

All Kéier wann de Loop eteréiert, gëtt de nächste Wäert an der Lëscht an d'Variabel agefouert, déi no dem Wuert "fir" bezeechent gëtt . An der éischter Schleife gëtt déi Variabel Numm genannt.

D' Echo- Erklärung benotzt fir Informatiounen op den Écran ze gesinn.

Dofir ass dësen Exemplar d'Nummeren 1 bis 5 a gitt deenen engen no beim Écran:

Wéi Loop tëschend Start a Endpunkt

De Problem mat dem iwwregens Beispill ass datt wann Dir eng méi grouss Lëscht verëffentlecht wëllt (sot 1 bis 500), da giff et al ginn all Nummeren op déi éischt Plaz ze sortéieren.

Dëst bréngt eis zum zweeten Exemplar wéi e spezielle Start- a Schlusspunkt ze spezifizéieren:

#! / bin / Bash
fir Zuel an {1..10}
maachen
Echo "$ number"
gemaach
Ausfahrt 0

D'Regele sinn am Prinzip déi selwecht. D'Wäerter nom Wuert " an" maachen d'Lëscht op dës Idiatioun ze maachen an all Wäert an der Lëscht ass an der Variabel (dh Zuel) plazéiert an all Kéier wann de Loop eteréiert, ginn d'Erklärungen tëschent do a gemaach .

Den Haaptunterhalt ass d'Art a Weis datt d'Lëscht geformt ass. D'Curly Brackets {} bezeechent een gréisstendeels a gëtt de Beräich, an dësem Fall, 1 bis 10 (déi zwou Punkte trennen de Start an d'Enn vun enger Band).

Dëst Beispill läuft duerch all Zuelen tëschend 1 an 10 a gitt d'Nummer op d'Écran wéi folgend:

Déi selwecht Schleife konnt esou geschriwwe ginn, mat Syntax identesch mat dem éischte Beispill:

fir Zuel an 1 2 3 4 5 6 7 8 9 10

Wéi schreiwen Nummeren an engem Range

Dee virdrun Beispill weist wéi eng Schleekung tëscht dem Start an dem Endpunkt geschriwwe gëtt, also lo kucken eis wéi d'Nummeren am Beräich verginn.

Stellt Iech vir, datt Dir tëschent 0 an 100 Schleife gesprëtzt, awer nëmmen all zéngter Nummer ze weisen. De folgend Skript weist, wéi einfach et maachen:

#! / bin / Bash
fir Zuel an {0..100..10}
maachen
Echo "$ number"
gemaach
Ausfahrt 0

D'Regele sinn am Prinzip déi selwecht. Et ass eng Lëscht, eng Variabel an eng Rei vu Aussoe virgesinn tëscht Do an do . Dës Lëscht kuckt dës Kéier: {0..100..10}.

Déi éischt Nummer ass 0 an d'Schlussnummer ass 100. Déi drëtt Ziffer (10) ass d'Zuel vun Elementen an der Lëscht déi et gëtt.

Dëst Beispill weist de folgend Ausgab:

Eng méi traditionell Sich no Loop

D'BASH Wee fir Schreifweis ze schreiwen ass e wéineg frëndlech an am Verglach mat anere Programmiersprachen.

Dir kënnt awer nach eng ähnlech Styl fir eng C programmesch Sprooch schreiwen, esou:

#! / bin / Bash
fir ((Nummer = 1; Nummer <100; Nummer ++))
{
Wann (($ number% 5 == 0))
dann
Echo "$ number ass divisibel vu 5"
Fi
}}
Ausfahrt 0

De Loop fänkt un mat der variabler Zuel op 1 (Nummer = 1 ). De Loop wäert ett halen, wann de Wäert vun enger Zuel manner wéi 100 ass ( Zuel $ 100 ). De Wäert vun der Nummer ännert doduerch 1 no der Ofleetung no (all ++ ).

Alles tëscht de Curly Kloden ass duerch all Iteratioun vun der Loop.

De Bësch tëschent den Klameren kontrolléiert de Wäert vun enger Zuel , trennt et um 5 a vergläicht de Rest mat 0. Wann de Rescht 0 ass, dann ass d'Zuel Deel vu 5 a gëtt dann op dem Écran.

Zum Beispill:

Wann Dir de Schrëttgréisst vun der Iteratioun änneren wëllt, da kënnt Dir d'Nummer ++ ofgeschnidden sinn am Nummer = Nummer + 2 , Nummer = Nummer + 5 oder Nummer = Nummer + 10 etc.

Dëst kann weider reduzéiert ginn op Nummer + = 2 oder Nummer + = 5 .

Eng Praxisbeispill

Fir Loops kënnt méi wéi d'Ofdreiwung vun Zuelen maachen. Dir kënnt effektiv d'Ausgab vun aner Kommanden als Lëscht benotzen.

Dëst Beispill weist, wéi Audiodateien vu MP3 an WAV konvertéieren:

#! / bin / Bash

D'Lëscht am Beispill ass all Datei mat der .MP3 Erweiderung am aktuellen Ordner an d'Variabel ass e Fichier .

De Mpg- Kommando wandelt de MP3-Fichier an WAV. Dir musst Iech awer wahrscheinlech de Gebrauch vun Ärem Package-Manager installéieren.