Bash (Bourne Again Shell) je ukazni poziv in skriptni jezik lupine v operacijskih sistemih GNU/Linux. To je privzeta lupina za večino distribucij Linuxa.
Kot večina skriptnih jezikov, Bash ponuja sintakse zanke za večkratno ponovitev podobnih nalog. V tem članku se bomo naučili, kako uporabljati za
zanka v Bashu.
Uvod
Tipičen Bash skript vsebuje vrsto ukazov, ki se izvajajo enega za drugim. Spremenljivke se lahko uporabljajo za shranjevanje nizov, vrednosti celoštevilskih indeksov, rezultatov ukaza itd. Zanke so potrebne, če želi uporabnik večkrat izvesti določen ukaz. Posebej uporaben je, če je izhod enega ukaza v obliki seznama, pri vsakem rezultatu na seznamu pa je treba zagnati drugi ukaz.
Splošna sintaksa
Splošna sintaksa za za
zanka v Bashu je:
za v do ... ... opravljeno
Tukaj, je spremenljivka Bash, ki mora biti veljavno ime spremenljivke lupine Linuxa, tj. ime vsebuje kombinacijo črk (az, AZ), številk (0-9) in podčrtaja ( _ ) in se mora začeti s črko ali podčrtaj.
The je bodisi obseg celih indeksov po meri, ki bodo zankani, bodisi seznam celih števil ali nizov po meri. Lahko vsebuje tudi drug ukaz Linux, vendar mora biti izhod takega ukaza ločen s presledki ali znaki nove vrstice, tj. razčleniti ga Bash na seznam (seznam v Bashu je v bistvu zbirka vrednosti, ločenih s presledkom ali novo vrstico ).
Katerikoli ukaz(-i), ki naj bi se izvedel, mora biti nameščen znotraj narediti..opravljeno
blok.
Poglejmo si nekaj preprostih primerov.
Zanka na obsegu vrednosti Integer: Naslednja koda ustvari imenike z imenom dir1, dir2, dir3 do dir10.
za i v {1..10} naredite mkdir dir$i done
Zanka na seznamu fiksnih vrednosti: Naslednja koda natisne vsak niz ali celo število na danem fiksnem seznamu.
for i in Hello 1 2 3 Adijo! do echo $i done
Zanka ob izhodu ukaza: Naslednja koda se zanke čez izhod ls
in natisne ime vsake datoteke v dani obliki.
for i v `ls` do echo "Ime datoteke je $i" končano
Sintaksa, ki temelji na izrazu
Sintaksa, ki temelji na izrazu, podobna programskemu jeziku C, je možna tudi v Bashu:
za ((Izraz 1; Izraz 2; Izraz 3)) do ... ... končano
tukaj, Izraz 1
je inicializacija indeksnih spremenljivk. Izraz 2
je pogoj, ko je treba zanko zapustiti; ta pogoj se preverja pri vsaki ponovitvi. Izraz 3
določa prirast/pomanjšanje/spremembo vrednosti indeksne spremenljivke
Naslednji primer preprosto natisne vrednosti od 0 do 4:
for ((i=0;i<5;i++)) do echo $i done
Naslednji primer ustvari neskončno zanko, ker ni podan noben izraz:
za (( ; ; )) do echo "Pritisnite Ctrl-C za ustavitev" končano
Prekini in nadaljuj
Izjava o prekinitvi za pogojni izhod
Uporabimo lahko tudi pogojni stavek če
znotraj zanke. The če
stavek se lahko uporablja z a zlomiti
stavek, za pogojni izhod iz zanke.
for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; fi opravljeno
Zgornja zanka bo izpisala številke od 0 do 4. Potem, ko je vrednost i 5, bo izstopila iz zanke. To je še posebej uporabno, ko je treba zanko zapustiti, ko ukaz daje določen izhod. Na primer, naslednja zanka se prekine, če in ko najde prazno datoteko.
za datoteko v `ls` do flen=`wc -c $file` če [[ "$flen" = "0 $file" ]] potem echo "$file je prazna" prekinitev drugače echo $flen fi končano
Ukaz wc -c
natisne število vrstic v datoteki . Natisne ga v formatu
, na primer
10 test.txt
. Izstopimo iz zanke, ko je število vrstic 0, torej prazna datoteka.
Izjavo Continue, da pogojno preskočite ponovitev
Podobno kot C in številni drugi programski jeziki ima bash tudi a nadaljevati
stavek, da preskočite preostali del ponovitve v zanki, če je določen pogoj izpolnjen.
za ((i=0;i<10;i++)) stori if [[ $i -eq 5 ]] nato nadaljuj fi echo $i; Končano
Zgornja zanka bo izpisala številke od 0 do 10, razen 5, ker med ponovitvijo i=5
obstaja stavek za nadaljevanje, ki bo preskočil preostanek kode v zanki na začetku s ponovitvijo i=6
.
V naslednjem primeru natisnemo število vrstic v datoteki in določena ponovitev bo nadaljevati
če je imenik in ne datoteka.
za datoteko v `ls` stori if [[ -d $file ]] nato nadaljuj fi wc -c "$file" končano
[[ -d $file ]]
preveri, ali je datoteka imenik. Če je, potem preskočimo na naslednjo datoteko, torej naslednjo ponovitev. Če ne gre za imenik, natisnemo število vrstic v datoteki z uporabo stranišče
ukaz, kot je prikazano tudi prej.
Uporaba zank: skripti in ukazna vrstica
Sintakso zanke lahko uporabite v lupini Bash neposredno ali iz datoteke skripta lupine. Enkrat a za
sintaksa zanke je vnesena v lupino, lupina nadaljuje s pozivom, da uporabniku omogoči nadaljevanje ukazov, ki jih je treba zastaviti.
Sicer pa lahko uporabnik to shrani v skriptno datoteko in izvede skriptno datoteko.
The #!/bin/bash
na začetku določa tolmač, ki bo uporabljen, ko se datoteka izvaja. Čeprav je Bash danes najpogosteje uporabljena lupina, nekateri uporabniki raje uporabljajo lupine, kot so zsh
, ki ga je treba podati namesto bash na začetku te datoteke.
Da bi dali dovoljenja za izvajanje za to datoteko zaženite:
chmod +x test.sh
končno, za izvedbo datoteke, zaženi:
./test.sh
Zaključek
The za
zanka v Bashu je precej preprosta funkcija, vendar se uporablja v skoraj vseh vrstah zapletenih scenarijev. Učenje tega je zelo pomembno, ne glede na to, ali ste redni ali napredni uporabnik Linuxa ali se začnete učiti avtomatizacije za naloge sistemske administracije in DevOps.