Saklaw ng Bash: Paano umulit sa mga pagkakasunud-sunod na nabuo sa shell

Bash Range How Iterate Over Sequences Generated Shell



Maaari mong ulitin ang pagkakasunud-sunod ng mga numero sa bash sa pamamagitan ng dalawang paraan. Ang isa ay sa pamamagitan ng paggamit seq utos at isa pa ay sa pamamagitan ng pagtukoy ng saklaw para sa loop. Sa seq utos, ang pagkakasunud-sunod ay nagsisimula mula sa isa, ang bilang ay nagdaragdag ng isa sa bawat hakbang at nai-print ang bawat numero sa bawat linya hanggang sa itaas na limitasyon bilang default. Kung ang numero ay nagsisimula mula sa itaas na limitasyon pagkatapos ay nababawasan ito ng isa sa bawat hakbang. Karaniwan, ang lahat ng mga numero ay binibigyang kahulugan bilang lumulutang na punto ngunit kung ang pagkakasunud-sunod ay nagsisimula mula sa integer pagkatapos ang listahan ng mga decimal integer ay mai-print. Kung ang seq command ay maaaring matagumpay na maisagawa pagkatapos ay ibabalik nito ang 0, kung hindi man ay ibabalik nito ang anumang di-zero na numero. Maaari mo ring ulitin ang pagkakasunud-sunod ng mga numero gamit ang para sa loop na may saklaw. Pareho seq ang utos at para sa loop na may saklaw ay ipinapakita sa tutorial na ito sa pamamagitan ng paggamit ng mga halimbawa.

Ang mga pagpipilian ng seq command:

Pwede mong gamitin seq utos sa pamamagitan ng paggamit ng mga sumusunod na pagpipilian.







-sa

Ang pagpipiliang ito ay ginagamit upang maitabid ang mga numero sa mga nangungunang mga zero upang mai-print ang lahat ng mga numero na may pantay na lapad.



-f format

Ginagamit ang pagpipiliang ito upang mai-print ang numero na may partikular na format. Ang naka-float na numero ay maaaring mai-format sa pamamagitan ng paggamit ng% f,% g at% e bilang mga character ng conversion. Ginagamit bilang default ang% g.



-s string

Ginagamit ang opsyong ito upang paghiwalayin ang mga numero sa string. Ang default na halaga ay newline (‘ n’).





Mga halimbawa ng seq command:

Maaari kang maglapat ng seq utos sa pamamagitan ng tatlong paraan. Maaari mo lamang gamitin ang itaas na limitasyon o itaas at ibabang limitasyon o itaas at ibabang limitasyon na may pagtaas o halaga ng pagbawas ng bawat hakbang. Ang iba't ibang paggamit ng seq command na may mga pagpipilian ay ipinapakita sa mga sumusunod na halimbawa.

Halimbawa-1: seq utos nang walang pagpipilian

Kapag ang itaas na limitasyon lamang ang ginamit pagkatapos ang numero ay magsisimula mula sa 1 at dagdagan ng isa sa bawat hakbang. Ang sumusunod na utos ay mai-print ang numero mula 1 hanggang 4.



$seq 4

Output:

Kapag ang dalawang halaga ay ginamit sa seq utos pagkatapos ay gagamitin ang unang halaga bilang panimulang bilang at ang pangalawang halaga ay gagamitin bilang nagtatapos na numero. Ang sumusunod na utos ay mai-print ang numero mula 7 hanggang 15.

$seq 7 labinlimang

Output:

Kapag gagamit ka ng tatlong mga halaga na may seq utos pagkatapos ang pangalawang halaga ay gagamitin bilang pagtaas o halaga ng pagbawas para sa bawat hakbang. Para sa sumusunod na utos, ang panimulang numero ay 10, ang nagtatapos na numero ay 1 at ang bawat hakbang ay bibilangin sa pamamagitan ng pagbawas ng 2.

$seq 10 -2 1

Output:

Halimbawa-2: seq na may –w na pagpipilian

Ang sumusunod na utos ay mai-print ang output sa pamamagitan ng pagdaragdag ng nangungunang zero para sa numero mula 1 hanggang 9.

$seq -sa0110

Output:

Halimbawa-3: seq na may pagpipilian na –s

Gumagamit ang sumusunod na utos - bilang separator para sa bawat numero ng pagkakasunud-sunod. Ang pagkakasunud-sunod ng mga numero ay mai-print sa pamamagitan ng pagdaragdag - bilang separator.

$seq -s-8

Output:

Halimbawa-4: seq na may -f pagpipilian

Ang sumusunod na utos ay mai-print ang 10 mga halaga ng petsa simula sa 1. Dito, ginagamit ang% g na pagpipilian upang magdagdag ng numero ng pagkakasunud-sunod sa iba pang halaga ng string.

$seq -f '% g / 04/2018' 10

output:

Saklaw ng Bash

Ang sumusunod na utos ay ginagamit upang makabuo ng pagkakasunud-sunod ng lumulutang point number gamit ang% f. Dito, magsisimula ang numero mula 3 at dagdagan ng 0.8 sa bawat hakbang at ang huling numero ay mas mababa sa o katumbas ng 6.

$seq -f '% f' 3 0.8 6

Output:

Halimbawa-5: Isulat ang pagkakasunud-sunod sa isang file

Kung nais mong i-save ang pagkakasunud-sunod ng numero sa isang file nang hindi nagpi-print sa console pagkatapos ay maaari mong gamitin ang mga sumusunod na utos. Ang unang utos ay mai-print ang mga numero sa isang file na pinangalanan seq.txt . Ang numero ay bubuo mula 5 hanggang 20 at dagdagan ng 10 sa bawat hakbang. Ang pangalawang utos ay ginagamit upang matingnan ang nilalaman ng seq.txt file

$ seq 5 10 20 | pusa> seq.txt
$ cat seq.txt

Output:

Halimbawa-6: Paggamit ng seq para sa loop

Ipagpalagay, nais mong lumikha ng mga file na pinangalanang fn1 hanggang fn10 na ginagamit para sa loop na may seq. Lumikha ng isang file na pinangalanang sq1.bash at idagdag ang sumusunod na code. Para sa loop ay uulitin ng 10 beses gamit ang seq command at lumikha ng 10 mga file sa pagkakasunud-sunod fn1, fn2, fn3… ..fn10.

#! / baseng / bash
para saakosa 'seq 10'
gawin
hawakanfn$ i
tapos na

Output:

Patakbuhin ang mga sumusunod na utos upang maipatupad ang code ng bash file at suriin ang mga file ay nilikha o hindi.

$bashsq1.bash
$ls

Mga halimbawa ng para sa loop na may saklaw:

Halimbawa-7: Para sa loop na may saklaw

Ang kahalili ng seq utos ay saklaw. Maaari mong gamitin ang saklaw para sa loop upang makabuo ng pagkakasunud-sunod ng mga bilang tulad ng seq. Isulat ang sumusunod na code sa isang bash file na pinangalanan sq2.bash . Ang loop ay umuulit para sa 5 beses at mai-print ang square root ng bawat numero sa bawat hakbang.

#! / baseng / bash
para sansa {1..5}
gawin
((resulta= n*n))
itinapon $ n parisukat=$ resulta
tapos na

Output:

Patakbuhin ang utos upang maipatupad ang script ng file.

$bashsq2.bash

Halimbawa-8: Para sa loop na may saklaw at halaga ng pagtaas

Bilang default, ang numero ay pagtaas ng isa sa bawat hakbang sa saklaw tulad ng seq. Maaari mo ring baguhin ang halaga ng pagtaas sa saklaw. Isulat ang sumusunod na code sa isang bash file na pinangalanan sq3.bash . Ang para sa loop sa script ay paulit-ulit para sa 5 beses, ang bawat hakbang ay nadagdagan ng 2 at i-print ang lahat ng mga kakaibang numero sa pagitan ng 1 hanggang 10.

#! / baseng / bash
itinapon 'lahat ng mga kakaibang numero mula 1 hanggang 10 ay'
para saakosa {1..10..2}
gawin
itinapon $ i;
tapos na

Output:

Patakbuhin ang utos upang maipatupad ang script ng file.

$bashsq3.bash

Kung nais mong gumana sa pagkakasunud-sunod ng mga numero maaari mong gamitin ang anuman sa mga pagpipilian na ipinapakita sa tutorial na ito. Matapos makumpleto ang tutorial na ito, makakagamit ka ng seq command at para sa loop na may mas mahusay na saklaw sa iyong bash script.