Nola idatzi Bash WHILE-Loops

Komandoak, sintaxiak eta adibideak

Komandoen sekuentzia bat exekutatu dezakezu script-fitxategi batean idazteko eta exekutatzeko.

Gidoi-fitxategi bat testu-fitxategi bat besterik ez da, normalean .SH fitxategiaren luzapenarekin batera, komando lerroan ( shell ) exekuta daitezkeen jarraibideen sekuentzia bat dauka.

Loop adibideak

Jarraian begizta baten adibide bat dago. Exekutatzean, script-fitxategiak pantailan 1etik 9ra zenbakiak inprimatuko ditu. Bitartekaratzeak malgutasun handiagoa ematen du for-loop baino termino baldintza zehazteko.

#! / bin / bash count = 1 bitartean [$ count -le 9] echo "$ count" sleep 1 ((count ++) egin da)

Adibidez, aurreko gidoia infiniturako begizta bat egin dezakezu "((count ++) gehikuntza" "adierazpena ezabatuz)":

#! / bin / bash count = 1 bitartean [$ count -le 9] echo "$ count" lo egin 1 egin da

"Lo 1" deklarazioak 1 segundo exekutatzen du iterazio bakoitzean. Erabili Ktrl + C laster- tekla prozesua amaitzeko.

Begizta infinitua ere sor dezakezu koloneko baldintza gisa:

#! / bin / bash count = 1 bitartean: echo "$ count" sleep 1 ((count ++)) egin da

Bideokliparen baldintza anitzak erabiltzeko, kortxetaren nota bikoitza erabili behar duzu:

count = 1 done = 0 bitartean [[$ count -le 9] eta & [$ done == 0]] echo "$ count" lo egin 1 ((count ++)) [$ count == 5]; gero $ egin = 1 amaitu da

Gidoian, "egin" aldagaia 0-ra hasieratzen da eta, ondoren, 1 zenbatzen denean zenbaketa 5 iristen denean. Begizta baldintza adierazten du begizta bitartean "zenbaketa" bederatzi baino gutxiago irauten duen bitartean eta "egin" berdina izango da zero. Hori dela eta, begiztak irteera zenbaketa berdin 5 da.

"&&" esan nahi du logikoak "eta" eta "||" "edo" logikoa esan nahi du.

Konbinazioetarako "eta" eta "edo" edo "baldintzetan" notazio alternatiboa "-a" eta "-o" kortxete bakarrekoak dira. Goiko baldintza:

[[$ count -le 9] eta & [$ done == 0]]

... berriro idatzi daiteke:

[$ count -le 9] -a [$ done == 0]

Testu fitxategi bat irakurtzerakoan normalean begizta batekin egiten da. Ondorengo adibidean, bash scriptek "inventory.txt:" izeneko fitxategi baten lerroaren edukia lerroa irakurtzen du.

FILE = inbentario.txt exekutiboa 6

Lehenengo lerroak sarrerako fitxategiaren izena "FILE" aldagaia esleitzen du. Bigarren lerroak "sarrera estandarra" gordetzen du fitxategi-deskriptorean "6" (3 eta 9 bitarteko balioa izan liteke). Horrela, "sarrera estandarra" script-aren amaieran "0" fitxategi-deskriptorea berriro itzul daiteke (ikus "0 exekuzioa" adierazpena 3. lerroan sarrerako fitxategia "0" deskribapen-fitxategiari esleitzen zaio. sarrera estandarrarentzat. "Irakurri" instrukzioak lerro bat irakurtzen du iterazio bakoitzeko fitxategi batetik eta "line1" aldagaiari esleitzen dio.

Bitarteko aldizkako irteera lehenetsi gisa, hau atsegin adierazpena erabil dezakezu:

count = 1 done = 0 bitartean [$ count -le 9] echo "$ count" lo egin 1 ((count ++)) [$ count == 5] bada, orduan amaitu ostean echo Amaitutako

Break adierazpenak programa exekuzioa amaitzen du begizta bitartean eta ondorengo adierazpen guztiak exekutatzen ditu. Kasu honetan, "oihartzuna amaitu" deklarazioa.

Jarraipen adierazpena, bestalde, uneko iterazioaren begiztapenaren gainerako pausoa bakarrik uzten du eta hurrengo irizpidea zuzenean joaten da:

count = 1 done = 0 bitartean [$ count -le 9] lo egin 1 ((count ++)) bada [$ count == 5] gero jarraitu echo "$ count" egin echo amaitutako

Kasu honetan, "jarraitu" deklarazioa exekutatzen da "zenbaketa" aldakorra 5. iristen denean. Horrek esan nahi du ondorengo adierazpena (echo "$ count") ez da iterazio honetan exekutatzen ("zenbaketa" balioa 5 da).