Programming sa bash - bahagi 2

Bahagi ang dalawa ng ito mini-tutorial programa sa Malakas na palo, kung saan natututo tayong gumamit mga siklo at iba pang mga tool na makakatulong sa amin na mapabuti ang mga pagpapaandar ng aming script.

Ang Kung may kondisyon

Ang pagpapaandar ng If ay upang mag-apply ng isang filter at magsagawa ng isang operasyon o gawain para sa bawat uri ng filter na inilapat. Ang istraktura nito ay ang mga sumusunod:

Kung [kondisyon]; pagkatapos ay ang utos ng elif [kondisyon]; pagkatapos ay iba pang mga utos; utos ng fi

Ang isang halimbawa ay ipinapakita sa tabi ng Para sa loop sa kani-kanilang seksyon.

Pag-ikot

1. Habang: isasagawa nito ang lahat ng mga utos na tinukoy sa pagitan ng do at tapos hangga't ang kondisyon ay totoo. Kung nais naming ipasa ang mga operator ng paghahambing dito, ang expression ay dapat na nasa mga braket.

habang ang KUNDISYON / utos ay ginagawa ang mga utos

Halimbawa: talahanayan ng pagpaparami ng isang numero

#! / bin / bash X = 1 echo "Magpasok ng isang numero at pindutin ang ENTER" basahin ang M #Ang mga kontrol sa loop na X ay mas mababa sa o katumbas ng 10 habang [$ X –le 10] ginagawa ang #In R ay itinatago natin ang pagpaparami ng X ng MR = $ [X * M] # Ang pagpaparami na ito ay naka-print sa screen ng echo na "$ M * $ X = $ R" #Kaya't, taasan natin ang halaga ng X ng 1 yunit hayaan X = $ X + 1 tapos na

2. Para sa: nag-iimbak ng isang listahan ng mga elemento sa isang variable, na magagamit upang maisagawa ang ilang mga pagpapatakbo sa bawat pag-ikot.

para sa VARIABLE sa ELEMENTS ginagawa ang mga utos

Halimbawa: programa na kumopya ng isang file mula sa isang folder patungo sa isa pa, na papalit sa isang lumang file.

# / bin / bash #Nagtaguyod kami ng mga direktoryo ng mapagkukunan at patutunguhan ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Ipinuwesto namin ang aming sarili sa pinagmulang cd $ ORIGIN # Sa lahat ng mga file, nais lamang namin ang isa na # tawagan ang FILE para sa FILE sa * gawin ang ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f na pansala sa amin ng mga regular na file, dahil ang mga direktoryo ay # walang maganda para sa amin. –Na-filter nito ang # file na “mas bago” kaysa sa # na matatagpuan sa folder ng patutunguhan kung [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; pagkatapos ay i-echo ang "Pagkopya ng $ FILE ..." # kinopya namin ang file gamit ang cp cp $ FILE $ ARCH-DESTINATION na tapos na #We cd to exit the source folder cd

Isa pang halimbawa: script kung saan dapat hulaan ng gumagamit ang isang random na numero na nabuo ng computer.

# / bin / bash # Ang isang random na numero ay nabuo mula 1 hanggang 10, ito ay nai-save sa RANDOM RANDOM = $ [$ RANDOM% 10 + 1] habang [1] nag-echo –n "Magpasok ng isang numero:" basahin ang NUM # Ihambing kung ang bilang na pinili ng gumagamit ay # pantay sa RANDOM; tandaan na gumamit ng $ upang suriin ang # mga halaga ng mga variable at hindi ang kanilang mga pangalan kung ["$ NUM –eq" $ RANDOM "]; pagkatapos ay i-echo "Tama ka!" Pinapayagan ng #break na wakasan ang loop habang masisira #Kung ang numero ay mas mababa sa RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; pagkatapos ay i-echo ang "Ito ay mas mababa" "Kung hindi, ito ay mas malaki kaysa sa RANDOM iba pa echo" IT IS mas malaki "fi tapos na

3. Hanggang sa: halos kapareho sa istraktura ng Habang, maliban na ang code ay palaging nagpapatupad habang ang pagsusuri ng kundisyon ay negatibo, iyon ay, ang programa ay patuloy na nagpapatupad "hanggang sa mangyari ang kundisyon"

hanggang sa ang KUNDISYON / utos ay magawa ang mga utos

Halimbawa: i-print ang mga numero 10-20 sa pababang pagkakasunud-sunod

#! / bin / bash CONT = 20 # Hangga't ang counter ay mas mababa sa 10 (-lt, "lower #than") ang code ay naisakatuparan hanggang [$ CONT -lt 10]; gawin ang echo "COUNTER $ CONT" #A CONT ay ibabawas ng isang yunit hayaan ang CONT- = 1 tapos

4. Piliin: ang huling ikot na ito ay isang espesyal na kaso, dahil sa pangkalahatan ito ay ginagamit upang mabilis na makagawa ng mga menu. Gumagana ito katulad ng Para sa loop.

piliin ang VARIABLE sa LIST ng mga nagawang utos

Halimbawa: bigyan ang gumagamit ng kakayahang ipagpatuloy o wakasan ang script.

Ang #! / bin / bash #item ay isang variable na tumutugon sa kung ano ang pipiliin ng #user, Magpatuloy at Tapusin ang mga magagamit na # opsyon sa kanya, bagaman ang iba pang mga pagpipilian ay maaaring idagdag # higit pang piling item sa Magpatuloy Tapusin ang # Kung pipiliin ng gumagamit tapusin ang programa, pagkatapos ay may break na lumabas kami ng cycle. kung [$ item = "Tapusin"]; tapos break fi tapos
Salamat Juan Carlos Ortiz!

13 na puna, iwan mo na ang iyo

Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Katamtaman Mahirap dijo

    Sa palagay ko may katulad ito: tar -cf - Directory | (cd / iba / direktoryo; tar -xvf -)

    Pagkatapos ito ay magiging hitsura ng / ibang / direktoryo / Directory
    Sa ganoong paraan ay nai-compress ko ang isang Directory at na-decompress mo ito sa ibang lugar ....

  2.   Miguel Angel dijo

    Kumusta, mabuting tuto, natututunan ko ang tungkol sa paksa at lahat ay mabuti, lamang hindi ako nakagawa ng isang programa na makakatulong sa akin, upang makita kung maaari mo akong tulungan.

    Kailangan kong gumawa ng isang pag-ikot, kung saan makakatanggap ito bilang mga parameter ng isang listahan ng isang mapagkukunang file, nagdadala lamang ang listahang ito ng mga pangalan (nang walang extension), upang gawin ng siklo ang sumusunod, hanapin ang nasabing pangalan na natanggap sa isang direktoryo (na kung saan ang hahanapin namin) , kunin at kopyahin ang file (ang buong pangalan ay mayroon nang extension) at ang ganap na landas at likhain ito sa isa pang patutunguhang file.

    Sa ngayon mayroon akong mga sumusunod:

    habang binabasa ang linya
    do
    echo -e "$ line"
    hanapin / bahay / myuser / dof "$ line" -exec readlink -f {};
    tapos <testlist.txt Sa ngayon nabasa ko ang file, bawat linya na mayroon ito, ngunit hindi ko magawang hanapin ang file na iyon at kunin ang impormasyon, kung maaari mo akong tulungan, salamat. Cheers

  3.   Pamela galaviz dijo

    Maraming salamat sa iyong naiambag 🙂

  4.   Mario Xavier dijo

    hi ... sana makakatulong ka sa susunod na kasanayan ... I-unzip ang file sa tgz sa tinukoy na direktoryo, bilang karagdagan sa pagtukoy ng gumagamit at pangkat para sa lahat ng mayroon nang mga direktoryo at file, at pagtatalaga ng mga pahintulot sa mga file at direktoryo
    tala: handa na ang mga file para sa pagbabasa at pagsusulat
    pahintulot sa pagpapatupad ng mga direktoryo

  5.   johnk dijo

    Ang ARCH-DESTINATION ay isang variable kung saan nais naming i-save ang landas ng patutunguhang file, i-save para sa kalabisan. Pagkatapos, sa variable na ito ipinapahiwatig namin ang variable DESTINATION, na sa itaas ay naglalaman ng landas sa folder ng Mga Dokumento at idinagdag namin ang "variable" na FILE, na naglalaman ng pangalan ng file. Kung ang file na iyon, halimbawa, list.doc, ang variable na ARCH-DESTINATION ay katumbas ng /home/Usuario/Documentos/listado.doc

  6.   Gumamit tayo ng Linux dijo

    Ito ay ang nakaraang artikulo. Maaari mo itong ma-access sa http://usemoslinux.blogspot.com

    Yakap! Paul

  7.   Lantad dijo

    Magandang umaga mate salamat lang, napakahusay ng iyong blog, ngunit hindi ko makuha ang unang bahagi ng Programming sa Bash, kung saan ko ito nakuha salamat, pagbati

  8.   Saito Mordraw dijo

    Dalawang pambihirang bahagi, taos-puso kong pagbati.

    Simpleng kamangha-mangha.

  9.   Fredy dijo

    Mahusay

  10.   Hugo dijo

    Kumusta, gumagawa ako ng isang programa sa isang KASO, kung ano ang gusto kong gawin at hindi ko alam kung paano, halimbawa:

    echo Pinili ang isang pagpipilian:
    miss
    echo 1. pagpipilian 1
    echo 2. pagpipilian 2
    echo 3. pagpipilian 3
    echo 4. pagpipilian 4
    echo 5. Exit
    basahin ang var
    kaso "$ var" sa
    1)
    echo "Pinili mo ang pagpipilian 1"
    ;;
    2)
    echo "Pinili mo ang pagpipilian 2"
    ;;
    3)
    itinapon ang "… .."
    ;;
    4)
    itinapon ang "....."
    ;;
    5)
    itinapon ang "..."

    ;;
    *)
    echo "maling pagpipilian"
    ;;
    na C

    ok kung ano ang hindi ko alam kung paano gawin ito ay kapag pinili ko ang opsyon 4 na kung saan ay umalis, tanungin kung gusto ko talagang umalis, at bigyan ako ng 2 pagpipilian na Y & N

    at ang iba pa ay kapag pumili ka ng ibang bagay kaysa sa mga numero 1..5 huwag bumoto para sa akin mula sa script ....

    Maaari mo ba akong tulungan salamat.

  11.   DAPAMA21 dijo

    Kumusta, nagsimula akong mag-script 1 buwan na ang nakakaraan at salamat sa iyong mga post sa script. Magagawa ko ang tungkol sa 15-20. Maraming salamat po muna Ngunit ngayon binigyan kami ng aming guro ng trabaho kung saan ako ay natigil. Dahil nagtanong ang guro:
    pagpasa ng isang direktoryo, kopyahin sa iyong tahanan ang lahat ng mga file na nasa direktoryong iyon ayon sa alpabeto at pagbibigay ng pangalan sa kanila ng file1 file2 atbp ... atbp ...
    Ngayon ako ay sa sandali ng hanapin o hanapin, nais kong gamitin ang hanapin ngunit kapag binibigyan ito ng isang error code tulad ng inilagay ko ito sa pamamagitan ng dev null, tinanggihan ang mga pahintulot pagkatapos ay nagkamali ako at inilalagay ang lugar na narito ako:
    hanapin ang $ 1 | grep "/ $ {1} \ $"
    pero syempre kasama nito lahat sila lumabas ...
    Maraming salamat kung nabasa mo ito.
    Kung matutulungan mo ako magiging malaking pabor ito.

  12.   Luis dijo

    Nais kong tulungan mo ako sa ito.
    1.-Ipasok ang isang buong numero sa keyboard at ipakita nang dalawang beses at triple ang numerong iyon sa screen. 2.- Gumawa ng isang programa upang magpasya kung ang isang numero na ipinasok ng keyboard ay mahahati ng 3 o hindi.
    3.- Gumawa ng isang programa upang hanapin ang kabuuan ng: ???????? + ???????? + ???????? + ???????? + ⋯? ????
    4.- Gumawa ng isang programa upang hanapin ang kabuuan ng 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Gumawa ng isang program na naglilimbag ng salitang Linux sa screen ng 10 beses
    6.-Gumawa ng isang programa na naglilimbag ng salitang Linux sa screen ng bilang ng mga beses na ipinahiwatig ng isang gumagamit.
    7.-Magpasok ng isang halaga sa oras at i-convert ang mga ito sa minuto at segundo.
    8.-Kalkulahin ang lugar ng isang tatsulok
    9.-Magpasok ng isang numero sa keyboard, pagkatapos kung ipasok mo ang 2 dapat itong parisukat, 3 cubed, 4 hanggang sa pang-apat at iba pa hanggang sa 6.
    10-Kalkulahin ang pensiyon na dapat bayaran ng isang mag-aaral, dapat ipasok ang specialty code, at ang mga araw na may atraso:
    KODE
    Espesyalista
    AMOUNT
    PANAHON Bawat Araw
    1
    PAGKOMPITO
    160
    1
    2
    NURSING
    150
    1.5
    3
    SEKRETARIAT
    140
    2
    4
    TOURISM
    180
    2.5
    5
    ACCOUNTING
    160
    1
    Dapat mong ipakita ang specialty na iyong pinag-aaralan, ang halaga ng pensiyon, ang default at ang kabuuang halaga na babayaran.

  13.   charly dijo

    Kumusta, may makakatulong sa akin?
    Kailangan ko «Humiling ng tatlong salita sa pamamagitan ng keyboard at ipakita ang mga ito ayon sa alpabetikong pagkakasunud-sunod mula A hanggang z»
    Sa Bash o sh wika para sa LINUX porfaborrrr