Paano Sumulat A BASH "para sa" Loop

Paano gamitin ang BASH "para sa" loop sa mga script ng shell

Ang BASH (na nakatayo sa Bourne Again Shell) ay isang scripting language na ginagamit ng karamihan sa mga operating system na Linux at UNIX.

Maaari kang magpatakbo ng mga utos ng BASH sa loob ng isang window ng terminal isa pagkatapos ng isa o maaari mong idagdag ang mga command sa isang text file upang makagawa ng isang shell script.

Ang mahusay na bagay tungkol sa pagsusulat ng mga script ng shell ay maaari mong patakbuhin ang mga ito muli at muli. Halimbawa, isipin na kailangan mong magdagdag ng isang user sa isang system, itakda ang kanilang mga pahintulot at pamahalaan ang kanilang panimulang kapaligiran. Maaari mong isulat ang mga utos sa isang piraso ng papel at patakbuhin ang mga ito habang nagdagdag ka ng mga bagong gumagamit o maaari kang sumulat ng isang script at ipasa lamang ang mga parameter sa script na iyon.

Ang mga scripting wika tulad ng BASH ay may mga katulad na programming na constructs tulad ng iba pang mga wika. Halimbawa, maaari mong gamitin ang mga parameter ng pag-import upang makakuha ng input mula sa keyboard at iimbak ang mga ito bilang mga variable. Pagkatapos ay maaari mong makuha ang script upang magsagawa ng isang tiyak na pagkilos batay sa halaga ng mga parameter ng input .

Ang isang mahalagang bahagi ng anumang programming at scripting language ay ang kakayahang magpatakbo ng parehong piraso ng code muli at muli.

Mayroong ilang mga paraan upang ulitin ang code (kilala rin bilang mga loop). Sa gabay na ito, ipapakita sa iyo kung paano magsulat ng isang "para" loop.

A para sa loop paulit-ulit ng isang tiyak na seksyon ng code paulit-ulit. Ang mga ito ay kapaki-pakinabang upang ang isang serye ng mga utos ay maaaring patuloy na tumakbo hanggang sa isang partikular na kondisyon ay natutugunan, pagkatapos kung saan sila ay titigil.

Sa gabay na ito, ipapakita sa iyo ang limang mga paraan upang gamitin ang para sa loop sa loob ng isang BASH script.

Bago Magsimula

Bago ka magsimula sa para sa mga halimbawa ng loop, kailangan mong buksan ang isang terminal window at sundin ang mga hakbang na ito:

  1. Magpasok ng mkdir script ( matuto nang higit pa tungkol sa mkdir dito )
  2. Ipasok ang mga script ng cd ( binabago nito ang direktoryo sa mga script )
  3. Ipasok ang nano examplen.sh (kung saan n ang halimbawa na pinagtatrabahuhan mo)
  4. Ipasok ang script
  5. Pindutin ang CTRL + O upang i-save at CTRL + X upang lumabas
  6. Patakbuhin ang bash examplen.sh (muli, may n ang halimbawa na nagtatrabaho ka)

Paano Mag-Loob sa Isang Listahan

#! / bin / bash
para sa numero sa 1 2 3 4 5
gawin
echo $ number
tapos na
exit 0

Ang BASH na paraan ng paggamit ng "for" loops ay medyo naiiba sa paraan ng karamihan sa ibang programming at scripting languages ​​na hawakan "para sa" mga loop. Let's break ang script down ...

Sa isang BASH "para sa" loop lahat, ang mga pahayag sa pagitan ng gawin at tapos ay ginaganap minsan para sa bawat item sa listahan.

Sa halimbawa sa itaas, ang listahan ay ang lahat ng bagay na dumating pagkatapos ng salita sa (ie 1 2 3 4 5).

Sa bawat oras na i-ulit ang loop, ang susunod na halaga sa listahan ay ipinasok sa variable na tinukoy pagkatapos ng salitang "for" . Sa loop sa itaas, ang variable ay tinatawag na numero .

Ang echo statement ay ginagamit upang ipakita ang impormasyon sa screen.

Samakatuwid, ang halimbawang ito ay tumatagal ng mga numero 1 hanggang 5 at nag-output ng mga ito nang isa-isa sa screen:

Paano Mag-Loob sa Pagitan ng isang Start and End Point

Ang problema sa halimbawa sa itaas ay kung nais mong iproseso ang isang mas malaking listahan (sabihin 1 hanggang 500), kakailanganin ang edad upang i-type ang lahat ng mga numero sa unang lugar.

Dinadala ito sa ikalawang halimbawa na nagpapakita kung paano tukuyin ang isang panimula at wakas na punto:

#! / bin / bash
para sa bilang sa {1..10}
gawin
echo "$ number"
tapos na
exit 0

Ang mga patakaran ay pareho lamang. Ang mga halaga pagkatapos ng salitang " sa" ay bumubuo sa listahan upang maulit at ang bawat halaga sa listahan ay nakalagay sa variable (ibig sabihin bilang), at sa bawat oras na ang loop ay umuulit, ang mga pahayag sa pagitan ng gawin at tapos ay gumanap.

Ang pangunahing kaibahan ay ang paraan na nabuo ang listahan. Ang mga kulot na kurbatang {} ay tumutukoy sa isang hanay, at ang hanay, sa kasong ito, ay 1 hanggang 10 (ang dalawang tuldok ay naghiwalay sa simula at wakas ng hanay).

Halimbawa, ang halimbawang ito ay tumatakbo sa bawat numero sa pagitan ng 1 at 10 at nilalabas ang numero sa screen bilang mga sumusunod:

Ang parehong loop ay maaaring nakasulat tulad nito, na may magkatulad na syntax sa unang halimbawa:

para sa numero sa 1 2 3 4 5 6 7 8 9 10

Paano Lumaktaw sa Mga Numero sa Saklaw

Ang nakaraang halimbawa ay nagpakita kung paano mag-loop sa pagitan ng panimula at wakas point, kaya ngayon titingnan namin kung paano laktawan ang mga numero sa hanay.

Isipin na gusto mong loop sa pagitan ng 0 at 100 ngunit ipakita lamang ang bawat sampung numero. Ipinapakita ng sumusunod na script kung paano gawin ito:

#! / bin / bash
para sa bilang sa {0..100..10}
gawin
echo "$ number"
tapos na
exit 0

Ang mga patakaran ay pareho lamang. May isang listahan, variable, at isang hanay ng mga pahayag na gagawin sa pagitan ng gawin at tapos na . Ang listahan ng oras na ito ay ganito ang hitsura: {0..100..10}.

Ang unang numero ay 0 at ang numero ng pagtatapos ay 100. Ang pangatlong numero (10) ay ang bilang ng mga item sa listahan na ito ay laktawan.

Kung gayon, ang halimbawa sa itaas ay nagpapakita ng sumusunod na output:

Isang Mas Tradisyonal na Hinahanap Para sa Loop

Ang BASH na paraan ng pagsusulat para sa mga loop ay bahagyang kakaiba kung ihahambing sa iba pang mga programming language.

Maaari mong, gayunpaman, magsulat ng isang para sa loop sa isang katulad na estilo sa C programming language, tulad nito:

#! / bin / bash
para sa ((numero = 1; bilang <100; numero + +))
{
kung (($ number% 5 == 0))
pagkatapos
echo "$ number ay mahahati ng 5"
fi
}
exit 0

Ang loop ay nagsisimula sa pamamagitan ng pagtatakda ng variable number sa 1 (numero = 1 ). Ang loop ay mananatiling iterating habang ang halaga ng isang numero ay mas mababa sa 100 ( bilang <100 ). Ang halaga ng numero ay nagbabago sa pamamagitan ng pagdaragdag ng 1 dito pagkatapos ng bawat pag-ulit ( numero + + ).

Lahat ng bagay sa pagitan ng mga kulot na tirante ay ginagawa sa bawat pag-ulit ng loop.

Ang bit sa pagitan ng mga brace ay sumusuri sa halaga ng isang numero , binabahagi ito sa pamamagitan ng 5, at inihambing ang natitira sa 0. Kung ang natitira ay 0 pagkatapos ang numero ay mahahati ng 5 at pagkatapos ay ipinapakita sa screen.

Halimbawa:

Kung gusto mong baguhin ang laki ng hakbang ng pag-ulit maaari mong baguhin ang numero ng + + na bilang number = number + 2 , number = number + 5 , o number = number + 10 atbp.

Ito ay maaaring karagdagang bawasan sa bilang + = 2 o numero + = 5 .

Isang Praktikal na Halimbawa

Para sa mga loop ay maaaring gawin higit pa kaysa sa ulit na mga listahan ng mga numero. Maaari mo talagang gamitin ang output ng iba pang mga utos bilang listahan.

Ang sumusunod na halimbawa ay nagpapakita kung paano mag-convert ng mga audio file mula sa MP3 sa WAV :

#! / bin / bash

Ang listahan sa halimbawang ito ay bawat file na may extension ng .MP3 sa kasalukuyang folder at ang variable ay isang file .

Ang mpg command ay nag-convert ng MP3 file sa WAV. Gayunpaman, malamang na kailangan mong i-install ito gamit ang iyong manager ng package muna.