Unsaon Pagsulat Bash WHILE-Loops

Mga Sugo, Syntax, ug mga Ehemplo

Mahimo nimong ipatuman ang usa ka han-ay sa mga sugo pinaagi sa pagsulat niini ngadto sa usa ka file sa script ug dayon kini gipadagan.

Ang usa ka file sa script usa lamang ka text file, kasagaran sa extension sa SH file, nga adunay usa ka han-ay sa mga instruksyon nga mahimo usab nga ipatuman gikan sa command line ( kabhang ).

Samtang mga Loop Examples

Sa ubos usa ka pananglitan sa usa ka yugto sa panahon. Kung ipatuman, kini nga file sa script mag-imprinta sa mga numero 1 hangtud 9 sa screen. Ang samtang-pahayag naghatag kanimo og dugang nga pagka-flexible alang sa pagtakda sa kahimtang sa termination kay sa for-loop .

#! / bin / bash count = 1 samtang [$ count -le 9] mo-echo ang "$ count" nga pagkatulog 1 ((ihap ++)) nahuman

Pananglitan, mahimo nimong himoon ang naunang script nga walay katapusan nga lungag pinaagi sa paglaglag sa pahayag nga increment "((ihap ++))":

#! / bin / bash count = 1 samtang [$ count -le 9] ang echo nga "$ count" nga natulog 1

Ang pahayag sa "sleep 1" mihunong sa pagpatay sa 1 ka segundo sa matag pag-uli. Gamita ang shortcut sa keyboard sa Ctrl + C aron tapuson ang proseso.

Mahimo usab ikaw makahimo og usa ka walay katapusan nga lungag pinaagi sa pagbutang sa usa ka colon ingon nga kondisyon:

#! / bin / bash count = 1 samtang: pag-echo "$ count" nga pagkatulog 1 ((ihap ++)) nahuman

Aron sa paggamit sa daghang mga kondisyon sa samtang-loop, kinahanglan nga gamiton ang double square bracket notation:

pag-ihap = 1 nahimo = 0 samtang [[$ count -le 9] && [$ done == 0]] pag-echo "$ count" pagkatulog 1 ((count ++)) kung [$ count == 5]; dayon $ done = 1 fi done

Sa kini nga script, ang variable nga "nahimo" gisugdan sa 0 ug dayon gibutang sa 1 sa dihang ang count miabot 5. 5. Ang kondisyon sa loop nag-ingon nga ang samtang ang loop magpadayon samtang ang "count" dili ubos sa siyam ug ang "gibuhat" parehas ngadto sa zero. Busa ang mga loops mogawas sa diha nga ang kantidad sama sa 5.

Ang "&&" nagpasabot sa lohikal nga "ug" ug "||" nagpasabut nga makatarunganon "o".

Usa ka alternatibo nga notasyon alang sa mga panagna "ug" ug "o" sa mga kahimtang mao ang "-a" ug "-o" nga adunay usa ka square brackets. Ang kahimtang sa itaas:

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

... mahimong isulat pag-usab sama sa:

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

Ang pagbasa sa usa ka teksto nga file sa kasagaran gibuhat sa usa ka samtang loop. Sa mosunod nga pananglitan, ang bash script mabasa ang mga sulod nga linya pinaagi sa linya sa usa ka file nga gitawag "inventory.txt:"

FILE = inventory.txt exec 6

Ang unang linya nag-assign sa input file nga ngalan ngadto sa variable nga "FILE". Ang ikaduhang linya nagluwas sa "standard input" sa file descriptor "6" (kini mahimong bisan unsang bili tali sa 3 ug 9). Gihimo kini aron ang "standard input" mapasig-uli sa file descriptor "0" sa katapusan sa script (tan-awa ang pamahayag nga "exec 0 Sa ikatulong linya ang input file gitudlo sa file descriptor" 0, "nga gigamit alang sa standard nga input. Ang pahayag sa "read" unya magbasa sa usa ka linya gikan sa file sa matag pag-uli ug ibutang kini sa "line1" nga variable.

Aron sa dili pa makagawas nga usa ka loop, mahimo nimong gamiton ang pahayag sa break nga ingon niini:

pag-ihap = 1 natapos = 0 samtang [$ count -le 9] pag-echo "$ count" pagkatulog 1 ((count ++)) kon [$ count == 5]

Ang break nga pahayag milaktaw sa pagpatuman sa programa hangtud sa katapusan samtang naglibot ug nagpatuman sa bisan unsang mga pahayag nga nagsunod niini. Sa kini nga kaso, ang pahayag nga "echo Finished."

Ang padayon nga pahayag, sa pikas bahin, naglansad lamang sa nahibilin sa pahayag sa loop sa karon nga lebel ug milukso diretso sa sunod nga pag-usab:

count = 1 done = 0 samtang [$ count -le 9] pagtulog 1 ((count ++)) kon [$ count == 5] ipadayon ang fiesta nga "$ count" nga gihimo echo

Sa kini nga kaso, ang "padayon" nga pahayag gipatuman sa diha nga ang variable nga "count" miabot sa 5. Kini nagpasabot nga ang kasunod nga pahayag (echo "$ count") wala ipatuman sa kini nga pag-uli (kung ang bili sa "count" mao ang 5).