Bash Scripting Tutorial para sa mga Nagsisimula

Bash Scripting Tutorial



Ang default na wika ng utos ng Linux ay Bash script. Kailangan naming magpatakbo ng maraming mga utos sa Linux araw-araw para sa maraming mga layunin. Ang mga pang-araw-araw na gawain na ito ay maaaring awtomatiko sa pamamagitan ng paggamit ng isang bash script. Ang sinumang gumagamit ay maaaring malaman ang wikang ito sa pag-script nang napakadali at mabilis. Kung bago ka sa bash programming kung gayon ang tutorial na ito ay para sa iyo.

Mga Nilalaman:

  1. Mga Komento
  2. utos ng echo
  3. Mga variable
  4. Kundisyon na pahayag
  5. Mga loop
  6. Mga pagpapaandar
  7. Pagtawag ng mga programa sa isang script
  8. Lumilikha ng Mga Menu
  9. Pagpoproseso ng Line Line
  10. Aritmetika
  11. Pagmanipula ng string
  12. Pagbabalik ng mga pabalik na code mula sa isang script at pagkuha ng ibang script
  13. Pagbasa at pagsusulat sa mga file
  14. Mga tubo

Mga Komento

Ang pagdaragdag ng mga komento sa code ay isang mahalagang bahagi ng anumang wika ng programa. Ang mga komento ay hindi na-parse sa script sa oras ng pagpapatupad. Maunawaan ng mambabasa ang anumang code nang maayos kung ang code ay mahusay na nagkomento. Maaari kang magdagdag ng isang puna sa maraming paraan sa bash script. Kung paano ka maaaring magdagdag ng mga solong linya at maraming mga linya na komento sa isang bash script ay ipinapakita sa bahaging ito. Lumikha ng isang bash file na may sumusunod na script upang malaman ang paggamit ng bash comment. Dito, ginamit ang simbolo na '#' para sa pagdaragdag ng isang solong linya na komento at solong quote (') na may': 'ay ginagamit para sa pagdaragdag ng maraming mga linya na komento.







bash_comment.sh



#! / baseng / bash
#Kumuha ng isang numero bilang input
itinapon 'Maglagay ng numero'
basahinsa
:'
Suriin ang input number ay
mas mababa sa 10 o mas malaki sa 10 o katumbas ng 10
'

kung [[ $ a -lt 10 ]]
tapos
itinapon 'Ang bilang ay mas mababa sa 10'
elif [[ $ a -gt 10 ]]
tapos
itinapon 'Ang bilang ay mas malaki sa 10'
iba pa
itinapon 'Ang numero ay katumbas ng 10'
maging

Output:



Patakbuhin ang iskrip.





$bashbash_comment.sh

Dito, ang script ay naisakatuparan ng tatlong beses na may input na halaga 3, 10 at 90. Lilitaw ang sumusunod na output.



Kung nais mong malaman ang tungkol sa bash na nagkomento pagkatapos ay maaari mong suriin ang tutorial na ito .

Pumunta sa tuktok

utos ng echo

Ginagamit ang utos ng `echo` sa bash upang mai-print ang output sa terminal. Ang iba't ibang mga pagpipilian ay maaaring magamit sa echo command sa bash upang mai-print ang output sa iba't ibang mga paraan. Lumikha ng isang bash file na may sumusunod na script upang malaman ang dalawang simpleng paggamit ng utos ng `echo`. Dito, ang unang utos ng `echo` ay mag-print ng isang simpleng data ng teksto na may isang bagong linya at ang pangalawang utos ng echo ay maglilimbag ng isang simpleng teksto nang walang isang bagong linya.

echo_test.sh

#! / baseng / bash
#I-print ang unang teksto
itinapon 'I-print ang teksto gamit ang isang bagong linya'
#I-print ang pangalawang teksto
itinapon -n 'I-print ang teksto nang walang bagong linya'

Output:

Patakbuhin ang iskrip.

$bashecho_test.sh

Ang sumusunod na output ay lilitaw pagkatapos ipatupad ang utos sa itaas.

Maraming iba pang mga paggamit ng `echo` utos sa bash. Maaari mong suriin ang tutorial na ito upang malaman ang tungkol sa utos ng `echo`.

Pumunta sa tuktok

Mga variable

Ang variable na deklarasyon ay isang kinakailangang bahagi ng anumang wika ng programa. Ang mga variable ng Bash ay maaaring ideklara sa iba't ibang paraan. Kapag ang isang halaga ay itinalaga sa isang variable pagkatapos ay walang simbolo ang ginamit sa simula ng variable. Ginamit ang simbolong ‘$’ na may variable na pangalan sa oras ng pagbabasa ng halaga ng variable. Maaaring magamit ang variable mula sa terminal o maaaring magamit sa anumang bash script.

Ang mga sumusunod na utos ay magdeklara ng isang variable ng string na pinangalanan mystr na may isang partikular na halaga at susunod na i-print ang halaga ng variable sa terminal.

$mystr='Gusto ko ng bash program'
$itinapon $ mystr

Output:

Lumikha ng isang bash file gamit ang sumusunod na script. Dalawang variable ang idineklara dito. Ito ay $ a at $ b . Kung ang halaga ng pag-input na nakaimbak sa $ a ay katumbas ng $ b pagkatapos ang mensahe, Ang mga numero ay pantay malilimbag kung hindi man Ang mga numero ay hindi pantay ililimbag.

var.sh

#! / baseng / bash
itinapon 'Maglagay ng numero'
basahinsa
b=100
kung [[ $ a -eq $ b ]]
tapos
itinapon 'Ang mga numero ay pantay'
iba pa
itinapon 'Ang mga numero ay hindi pantay'
maging

Output:

Patakbuhin ang iskrip.

$bashvar.sh

Ang utos sa itaas ay naisakatuparan ng dalawang beses na may halagang 56 at 100. lilitaw ang sumusunod na output.

Kung nais mong malaman ang tungkol sa bash variable pagkatapos maaari mong suriin ang tutorial na ito .

Pumunta sa tuktok

Kundisyon na pahayag

Tulad ng ibang wika sa pagprograma, maaari kang gumamit ng kondisyunal na pahayag sa bash. ‘ Kung sakali ay 'At' kaso Ang mga pahayag ay pangunahing ginagamit para sa pagpapatupad ng mga pahayag ng kundisyon sa anumang wika ng programa. Ang paggamit ng kondisyong pahayag sa pamamagitan ng paggamit 'Kung' ang pahayag ay ipinapakita sa seksyong ito ng tutorial na ito. Lumikha ng isang bash file gamit ang sumusunod na script kung saan ginagamit ang kondisyong pahayag. Dito, kukuha ng dalawang halaga mula sa gumagamit bilang input at nakaimbak sa mga variable, $ code , at $ edad . Ginamit ang pahayag na 'kung' upang suriin ang halaga ng $ edad ay higit sa o katumbas ng 18 at ang halaga ng $ code ay 1100 . Kung ang parehong mga kundisyon ay totoo pagkatapos ang mensahe, Karapat-dapat kang makita ang pelikula malilimbag kung hindi man Hindi ka karapat-dapat na makita ang pelikula ililimbag.

cond.sh

#! / baseng / bash

itinapon 'Ipasok ang iyong code'
basahincode
itinapon 'Ilagay ang edad mo'
basahinedad

kung [[ $ edad -give 18 && $ code -eq '1100' ]]
tapos
itinapon 'Karapat-dapat kang makita ang pelikula'
iba pa
itinapon 'Hindi ka karapat-dapat na makita ang pelikula'
maging

Output:

Patakbuhin ang iskrip.

$bashcond.sh

Lilitaw ang sumusunod na output pagkatapos kumuha ng iba't ibang mga halaga ng pag-input. Ang 1100 ay ibinibigay bilang isang code at ang 5 ay ibinibigay bilang edad para sa unang pagpapatupad at kung ang kundisyon ay bumalik nang mali para sa mga halagang ito. Ang 1100 ay ibinibigay bilang isang code at ang 45 ay ibinibigay bilang edad para sa pangalawang pagpapatupad na bumalik na totoo para sa kung kondisyon.

Kung nais mong malaman ang tungkol sa bash kondisyon na pahayag pagkatapos ay maaari mong suriin ang tutorial na ito.

Pumunta sa tuktok

Mga loop

Kapag ang ilang mga bahagi ng script ay kailangang magpatupad ng maraming beses pagkatapos ay ginagamit ang loop upang gawin ang gawain. Sinusuportahan ng Bash ang tatlong uri ng deklarasyon ng mga loop tulad ng ibang mga wika. Ito ay para sa, habang at hanggang sa mga loop. Batay sa mga kinakailangan sa programa, isang partikular na loop ang ginagamit sa script. Ang mga paggamit ng tatlong uri ng mga loop ay ipinapakita sa seksyong ito sa pamamagitan ng paggamit ng mga simpleng halimbawa.

Paggamit para sa loop

Lumikha ng isang bash file gamit ang sumusunod na script kung saan ` para` loop ay ginagamit para sa pag-ulit. `para` pangunahing ginagamit ang loop para sa pag-ulit ng isang listahan ng data o isang array. Dito, isang listahan ng pangalan sa araw ng linggo ang ginagamit at ang bawat pangalan sa araw ng linggo ay na-ulit sa pamamagitan ng paggamit para sa loop. `kung` ginagamit ang pahayag upang mag-print ng isang partikular na mensahe batay sa pangalan sa araw ng linggo.

para sa.sh

# Magbasa ng isang pangalan sa araw ng linggo sa bawat pag-ulit ng loop
para saarawsaLunes Martes Miyerkules Huwebes Biyernes Sabado Linggo
gawin

# Suriin ang pangalan sa araw ng linggo ay Lunes o Huwebes
kung [[ $ araw=='Lunes' || $ araw=='Huwebes' ]]
tapos
itinapon 'Pagpupulong sa$ araw9:30 am '

# Suriin ang pangalan sa araw ng linggo ay Martes o Miyerkules o Biyernes
elif [[ $ araw=='Martes' || $ araw=='Miyerkules' || $ araw=='Biyernes' ]]
tapos
itinapon 'Pagsasanay sa$ arawsa 11:00 am '
iba pa

#Print ng 'Holiday' para sa iba pang mga araw
itinapon '$ araway Holiday '
maging
tapos na

Output:

Patakbuhin ang iskrip.

$bashpara sa.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Kung nais mong malaman ang higit na ginagamit ng bash para sa loop pagkatapos ay maaari mong suriin ang tutorial na ito.

Gamit habang loop

Lumikha ng isang bash file gamit ang sumusunod na script kung saan ` habang ` loop ay ginagamit para sa pag-ulit. Ang script na ito ay mai-print ang mga numerong iyon mula 1 hanggang 20 na pantay at mahati ng 5. Dito, $ counter ginagamit ang variable upang makontrol ang pag-ulit ng loop at ang halaga ng variable na ito ay nadagdagan ng 1 sa bawat pag-ulit. Kailan `kung` ang kundisyon ay babalik totoo pagkatapos nito mai-print ang halaga ng $ counter .

#! / baseng / bash

#I-print ang mensahe
itinapon 'I-print ang mga numero na pantay at mahati ng 5'

#Initialize ang counter
counter=1

#Itertero ang loop hanggang sa ang halaga ng $ counter ay mas mababa sa o katumbas ng 20
habang [ $ counter -ang dalawampu ]
gawin

# Suriin ang $ counter ay mahahati sa pamamagitan ng 2 at 5
kung [[ $ counter%2-eq 0 && $ counter%5-eq 0 ]]
tapos
#Print $ counter nang walang newline
itinapon '$ counter'
maging

#Increment $ counter ng 1
((counter ++))
tapos na
itinapon 'Tapos na'

Output:

$bashhabang.sh

Mayroong mga numero lamang sa loob ng 1-20 ang mga iyon ay pantay at mahahati ng 5. lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Kung nais mong malaman ang higit na ginagamit ng bash ` habang` loop pagkatapos ay maaari mong suriin ang tutorial na ito .

Gamit hanggang loop

Lumikha ng isang bash file gamit ang sumusunod na script kung saan ` hanggang` loop ay ginagamit para sa pag-ulit. Ipi-print ng script na ito ang lahat ng mga kakaibang numero mula 0 hanggang 20. $ n variable ay ginagamit sa script na ito upang umulit ang loop.

hanggang.sh

#! / baseng / bash

#Initialize ang variable, n
n=dalawampu

# Ulitin ang loop hanggang sa ang halaga ng $ n ay higit sa 0
hanggang sa [ $ n -lt 0 ]
gawin

# Suriin ang halaga ng n ay kakaiba
kung [[ $ n%2-gt 0 ]]
tapos
itinapon $ n
maging

#Pagdagdag ng halaga ng n ng 1
((n=$ n-1))
tapos na

Output:

Patakbuhin ang iskrip.

$bashhanggang.sh

Ang script ay i-print ang lahat ng kahit na mga numero mula 20 hanggang 1. Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang script.

Pumunta sa tuktok

Mga pagpapaandar

Kapag ang isang bloke ng code ay kailangang magpatupad ng maraming beses sa isang script pagkatapos ang function ay ginagamit upang gawin ang gawain. Kakailanganin mong tawagan lamang ang pagpapaandar sa pangalan lamang kapag ang script na tinukoy sa pagpapaandar ay kailangang magpatupad ng maraming beses sa halip na idagdag ang parehong script nang maraming beses. Ang panimulang at pagtatapos ng unang bracket ay ginagamit sa pangalan ng pag-andar upang ideklara ang pagpapaandar sa bash script. Ang pagpapaandar ay maaaring tawagan ng pangalan lamang ng pag-andar sa bash. Hindi sinusuportahan ng Bash ang argumento ng pag-andar tulad ng isa pang pamantayang wika sa pagprograma. Ngunit ang halaga ay maaaring maipasa sa pag-andar ng bash sa ibang paraan na ipinapakita sa seksyong ito. Maaaring ibalik ang halaga mula sa pag-andar gamit ang pahayag sa pagbabalik o nang hindi ginagamit ang pahayag sa pagbabalik.

Lumikha ng isang bash file na may sumusunod na script upang malaman kung paano maaaring ideklara ang mga pagpapaandar at matawag sa bash script. Tatlong mga pagpapaandar ang idineklara sa script. Ang unang pagpapaandar ay idineklara upang mag-print ng isang simpleng mensahe, Bash Programming para sa nagsisimula . Ang pangalawang pagpapaandar ay idineklara upang magtalaga ng isang halaga ng string sa isang variable, $ return_str i-print iyon, Alamin ang bash programming sa LinuxHint pagkatapos tumawag sa pagpapaandar. Ang pangatlong pagpapaandar ay idineklara upang mabasa ang isang halaga ng argumento bilang bilog na radius na ibibigay sa oras ng pagtawag sa pagpapaandar. Dito, lokal ay ginagamit upang basahin ang halaga ng argumento. Kalkulahin ng pagpapaandar na ito ang lugar ng bilog batay sa halaga ng radius sa pamamagitan ng paggamit ng formula, πr2 at i-print ang kinakalkula na halaga ng lugar.

func.sh

#! / baseng / bash

#Magpahayag ng isang simpleng pagpapaandar
pagpapaandarprint_message()
{
itinapon 'Bash programming para sa nagsisimula'
}

#Deklara ang isang pagpapaandar upang maibalik ang isang halaga ng string
pagpapaandarret_strdata()
{
#Initialize ang variable na may halaga ng string
return_str='Alamin ang bash programming sa LinuxHint'
}

#Deklara ng isang pagpapaandar upang mabasa ang halaga ng argument
pagpapaandarkalkulahin_area()

# Basahin ang naipasa na halaga ng argument
lokal radius=$ 1
lugar= $(itinapon $ radius*$ radius*3.14

#Tawagin ang pagpapaandar upang mag-print ng isang simpleng mensahe
print_message

#Tawagin ang pagpapaandar na magtatalaga ng isang halaga ng string sa isang variable
ret_strdata

#I-print ang halaga ng variable
itinapon $ return_str

# Basahin ang halaga ng radius
itinapon 'Ipasok ang halaga ng radius'
basahintrabaho

#Tawagin ang pagpapaandar na may halaga ng radius
kalkulahin_area$ rad

Output:

Patakbuhin ang iskrip.

$bashfunc.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script. Ang unang dalawang linya ay mai-print sa pamamagitan ng pagtawag sa mga pagpapaandar, print_message () at ret_strdata () . Ang huling linya ay mai-print sa pamamagitan ng pagtawag sa pagpapaandar, kalkulahin_area () na may kinuha na halaga ng input radius.

Kung nais mong malaman tungkol sa pagbabalik ng isang string mula sa bash function na maaari mo tutoria na ito ang

Pumunta sa tuktok

Pagtawag ng mga programa sa isang script

Maaari kang gumamit ng maraming uri ng mga utos upang tumawag sa iba pang mga programa sa anumang bash script, tulad ng pinagmulan, bash, eval, exec , atbp Ipagpalagay na tatlong bash file, idagdag.sh , ibawas.sh, magparami.sh at dibisyon.sh nilikha upang maisagawa ang karagdagan, pagbabawas, pagpaparami, at paghahati. Dito, ibawas.sh at dibisyon.sh basahin ang mga argumento sa linya ng utos. Ang script ng lahat ng apat na mga file na ito ay ibinigay sa ibaba.

idagdag.sh

#! / baseng / bash
sa=60
b=40
((resulta=$ a+$ b))
itinapon 'Ang pagdaragdag ng$ a+$ b=$ resulta'

ibawas.sh

#! / baseng / bash
sa=$ 1
b=$ 2
((resulta=$ a-$ b))
itinapon 'Ang pagbabawas ng$ a-$ b=$ resulta'

magparami.sh

#! / baseng / bash
((resulta=$ 1*$ 2))
itinapon 'Ang pagpaparami ng $ 1 at $ 2 ay$ resulta'

hatiin.sh

#! / baseng / bash
sa=$ 1
b=2
((resulta=$ a/$ b))
itinapon 'Ang paghati ng$ ani$ bay$ resulta'

Lumikha ng isang bash file na pinangalanang, callpro.sh kasama ang sumusunod na script upang tawagan ang nabanggit na mga file ng bash gamit ang mga utos na mapagkukunan, bash, eval at exec. Dapat mong itakda ang pahintulot sa pagpapatupad para sa apat na mga file sa itaas bago patakbuhin ang sumusunod na script. Ginagamit ang command na `source` upang tumawag idagdag.sh file Ginagamit ang utos na `bash` upang maipatupad ang file na subtract.sh. Ginagamit ang `eval` command upang maipatupad ang multiply.sh file. Dalawang halaga ng pag-input ang ipinadala bilang mga argument ng linya ng utos para sa `eval` na utos. Ang huling utos ay ang utos ng exec na gumagana nang may ganap na landas lamang. Para sa mga ito, ang buong pangalan ng path ng div.sh file ay ibinibigay sa script.

callpro.sh

#! / baseng / bash
iskrip1='add.sh'
script2='ibawas.sh'
iskrip3='multiply.sh'
iskrip4='/home/fahmida/code/divide.sh'

pinagmulan '$ script1'

bash $ script2 limampu dalawampu

itinapon 'Ipasok ang halaga ng isang'
basahinsa
itinapon 'Ipasok ang halaga ng b'
basahinb
eval bash $ script3 $ a $ b
exec $ script4 30

Output:

Patakbuhin ang iskrip.

$bashcallpro.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Pumunta sa tuktok

Lumilikha ng Mga Menu

Mayroong isang kapaki-pakinabang na utos sa bash upang lumikha ng isang simpleng menu na kung saan ay tinatawag `select` utos Ang iba't ibang mga uri ng mga menu ay maaaring malikha sa pamamagitan ng paggamit ng utos na ito. Ang isang partikular na listahan ng data ay ginagamit upang lumikha ng isang menu sa pamamagitan ng utos na ito. Lumikha ng isang bash file na may sumusunod na code upang makita ang paggamit ng `select` utos para sa paglikha ng isang menu. Sa halimbawang ito, ang listahan ng limang mga item ay mai-print bilang isang menu at i-prompt ang gumagamit na pumili ng anumang wika mula sa listahan. Ang napiling halaga ay itatabi sa variable, $ wika na naka-print mamaya sa pamamagitan ng concatenating sa iba pang mga string. Patuloy na hihilingin ng script ang pagpili ng wika hanggang sa pindutin ng gumagamit 6 upang wakasan mula sa iskrip.

menu.sh

#! / baseng / bash

#Print na mensahe para sa gumagamit
itinapon 'Piliin ang iyong paboritong wika'

# Tukuyin ang listahan ng isang item sa menu
pumili kawikasaC# Java PHP Python Bash Exit
gawin
#I-print ang napiling halaga
kung [[ $ wika=='Exit' ]]
tapos
labasan 0
iba pa
itinapon 'Napiling wika ay$ wika'
maging
tapos na

Output:

Patakbuhin ang iskrip.

$bashmenu.sh

Ayon sa sumusunod na output, pinindot ng gumagamit ang 3 sa kauna-unahang pagkakataon na nag-print ng PHP at pinindot ang 6 sa pangalawang pagkakataon na natapos mula sa script.

Kung nais mong malaman ang higit pa tungkol sa paglikha ng bash menu sa `select` pagkatapos ay maaari mong bisitahin ang tutorial na ito.

Pumunta sa tuktok

Pagpoproseso ng Line Line

Minsan kailangan naming magbigay ng mga halaga ng pag-input kapag isinasagawa ang script mula sa linya ng utos. Ang gawaing ito ay maaaring gawin sa dalawang paraan sa bash. Ang isang paraan ay sa pamamagitan ng paggamit ng mga variable ng argumento at ang iba pang paraan ay ang paggamit ng pagpapaandar ng getopts. Ang pagbabasa ng data ng input ng linya ng utos mula sa terminal sa pamamagitan ng paggamit ng variable ng argumento ay ipinapakita sa seksyong ito.

Lumikha ng isang bash file na may sumusunod na script upang makita ang paggamit ng pagbabasa ng halaga ng argumento ng linya ng utos. Basahin ng script na ito ang tatlong mga argumento ng linya ng utos na maiimbak sa mga variable, $ operand1, $ operand2 at $ operator. Upang maipatupad nang maayos ang script, ang una at pangatlong halaga ng argumento ay dapat na bilang at pangalawang halaga ng argument ay dapat alinman sa apat na mga operator ng arithmetic ('+', '-', '/', 'x'). kung pahayag ay suriin ang halaga ng $ operator at gawin ang operasyon batay sa operator at i-print ang halaga.

cl1.sh

#! / baseng / bash

#Print ang mga variable ng argumento
itinapon 'Ang mga halaga ng argumento ay: $ 1 $ 2 $ 3'

# Mga halaga ng pagtatalo ng store
operand1=$ 1
operand2=$ 3
operator=$ 2

# Suriin ang halaga ng pang-utos na ika-2 na utos upang gawin ang operasyon ng arithmetic
kung [[ $ operator=='+' ]]
tapos
((resulta=$ operand1+$ operand2))
elif [[ $ operator=='-' ]]
tapos
((resulta=$ operand1-$ operand2))
elif [[ $ operator=='x' ]]
tapos
((resulta=$ operand1*$ operand2))
elif [[ $ operator=='/' ]]
tapos

((resulta=$ operand1/$ operand2))
maging

# i-print ang resulta
itinapon -At 'Resulta ay =$ resulta'

Output:

Patakbuhin ang iskrip.

$bashcl1.sh

Ang script ay naisakatuparan ng apat na beses para sa apat na uri ng mga operator ng arithmetic. Lilitaw ang sumusunod na output para sa mga halaga ng argument, 6 + 3, 6 - 3, 6 x 3 at 6/3 .

Ang mga halaga ng argumento ay maaaring maipasa sa pares ng halaga ng pangalan sa bash. Lumikha ng isang bash file na may sumusunod na script upang maipakita kung paano basahin ang mga halaga ng argument sa pangalan. Magbabasa ang script ng dalawang variable ng argumento. Ang mga halaga ng argument na may pangalan ay nakalimbag sa unang pahayag ng script. Susunod, isang para sa loop ang ginagamit upang umulit ang array na naglalaman ng mga halaga ng argumento ng linya ng utos. Ang bawat elemento ng array ay pinaghihiwalay sa isang pares ng key-halaga sa pamamagitan ng paggamit ng `cut` na utos. Susunod, ginamit ang pahayag ng kaso upang mag-print ng isang partikular na mensahe batay sa pangunahing halaga.

cl2.sh

. #! /am/bash

#Print ang mga variable ng argumento
itinapon 'Ang mga halaga ng argumento ay: $ 1 $ 2'

# Basahin ang bawat argumento nang hiwalay gamit ang para sa loop
para sagalitsa '[Protektado ang email]'
gawin

#Paghiwalayin ang pangalan at halaga ng argument
susi= $(itinapon $ arg | putol -f1 -d=)
halaga= $(itinapon $ arg | putol -f2 -d=)

Mensahe ng #Print batay sa pangalan ng argument
kaso $ key sa
pangalan) itinapon 'Pangalan ng mag-aaral =$ halaga';;
marka) itinapon 'Nakuha marka =$ halaga' ;;
*)
esac
tapos na

Output:

Patakbuhin ang script kasama ang sumusunod na mga argumento ng linya ng utos.

$bashcl2.shpangalan= Abir Hossainmarka=90

Ang dalawang mga argumento sa linya ng utos ay ibinibigay sa mga utos sa itaas. Ito ay pangalan = Abir Hossain at marka = 90 . pangalan at marka ay pinaghihiwalay ng script at ang dalawang halaga ay naka-print pagkatapos i-format ang output.

Pinoproseso ang mga argumento ng linya ng utos sa pamamagitan ng paggamit getopts Ang pag-andar ay hindi tinalakay sa tutorial na ito. Kung nais mong malaman tungkol sa pagpoproseso ng linya ng utos sa pamamagitan ng paggamit getopts pag-andar pagkatapos ay maaari mong bisitahin ang tutorial na ito .

Pumunta sa tuktok

Aritmetika

Ang paggawa ng pagpapatakbo sa aritmetika ay isang pangkaraniwang kinakailangan ng anumang wika sa pagprograma. Ginagawa ng Bash ang pagpapatakbo ng aritmetika sa ibang paraan kaysa sa isa pang karaniwang wika ng pagprograma. Mayroong maraming mga paraan upang gawin ang mga pagpapatakbo ng arithmetic sa bash. Ang isa sa mga simpleng paraan ng paggawa ng operasyon ng arithmetic ay ipinapakita sa seksyong ito. Lumikha ng isang bash file gamit ang sumusunod na script. Apat na uri ng pagpapatakbo ng aritmetika ang ipinapakita sa script na ito. Ang isang simpleng pagpapatakbo ng pagbubuod at paghahati ay ipinapakita sa pamamagitan ng paggamit ng doble unang mga braket sa simula ng script. Susunod, ipinakita ang operasyon ng pre-increment. Sa wakas, ang paraan ng paggamit ng shorthand operator ay ipinapakita sa huling bahagi ng script.

arith.sh

#! / baseng / bash
# Kalkulahin ang kabuuan
resulta= $((limampu+25))
# I-print ang halaga ng pagbubuod
itinapon 'sum =$ resulta'

# Kalkulahin ang paghahati
resulta= $((limampu/25))
# I-print ang halaga ng paghahati
itinapon 'paghati =$ resulta'

# Magtalaga ng isang halaga sa N
N=10
# Paggawa ng pre-increment
((--N))
# I-print ang halaga ng N
itinapon 'Halaga pagkatapos mabawasan =$ N'

# Paggamit ng shorthand operator
((N + =10 ))
# I-print ang halaga ng N
itinapon 'Halaga pagkatapos idagdag ang 10 =$ N'

Output:

Patakbuhin ang iskrip.

$basharith.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Ang lahat ng mga pagpapatakbo ng arithmetic ay ginagawa sa pamamagitan ng paggamit ng dobleng mga braket sa script sa itaas. Ngunit maaari mong gamitin ang ‘ hayaan ',' expr 'At' bc 'Utos na gawin ang operasyon ng arithmetic sa bash. Kung nais mong malaman ang tungkol sa mga utos na ito para sa paggawa ng bash arithmetic na operasyon pagkatapos ay maaari mong bisitahin ang tutorial na ito.

Pumunta sa tuktok

Pagmanipula ng String

Maraming uri ng mga gawain ang maaaring gawin sa data ng string sa bash. Ang ilan ay concatenating string, paghahambing ng string, paghahati ng isang string, Pagbabago ng kaso ng string, atbp. Walang built-in na mga function ng string tulad ng iba pang mga karaniwang wika sa bash upang gawin ang mga pagpapatakbo ng string. Ang ilang mga karaniwang manipulasyong string ay tinalakay sa seksyong ito ng tutorial na ito.

Nag-uugnay na String

Ang pagdaragdag ng dalawa o higit pang mga string na magkakasama ay tinatawag na string concatenation. Ang string ay pinagsama sa bash sa pamamagitan ng paglalagay ng isa-isa. Lumikha ng isang bash file gamit ang sumusunod na script upang maipakita ang paggamit ng string concatenation. Ang dalawang mga variable ng string ay pinasimuno at naka-print pagkatapos pagsamahin ang mga variable. Dito, ang nilalaman ng $ string1 at $ string2 isasama at maiimprenta.

concat.sh

#! / baseng / bash

#Magsimula ang variable ng unang string
string1='Gusto ko '
#Initialize ang pangalawang variable ng string
string2='Bash Programming'
#Print pagkatapos pagsamahin ang parehong mga string
itinapon '$ string1$ string2'

Output:

Patakbuhin ang iskrip.

$bashconcat.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Maaari mong malaman ang tungkol sa string concatenation mula sa tutorial na ito.

Pumunta sa tuktok

Paghahambing ng String

Gumagamit ang Bash ng iba't ibang uri ng mga operator upang ihambing ang data ng string. Lumikha ng isang bash file na may sumusunod na script upang maipakita kung paano ihambing ang dalawang data ng string. Ang isang halaga ng string ay kinuha bilang input sa script na inihambing sa isa pang string. Kung tumutugma ang halaga pagkatapos ng isang mensahe, Gusto mo ng Python malilimbag kung hindi man Gusto mo ng PERL ililimbag.

ihambing.sh

#! / baseng / bash
itinaponIpasok ang anumang halaga ng string
basahintext

# Suriin ang data ng pag-input ay katumbas ng Python
kung [ $ text=='Python' ];tapos
itinapon 'Gusto mo ng Python.'
iba pa
itinapon 'Gusto mo ng PERL'
maging

Output:

Patakbuhin ang iskrip.

$bashihambing.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script kung saan ang halaga ng pag-input ay 'PERL'.

Maaari mong malaman ang higit pa tungkol sa paghahambing ng string mula sa ang tutorial na ito .

Paghiwalay ng String

Ang Bash ay walang anumang built-in na split function upang hatiin ang data ng string. Ang data ng string ay maaaring nahahati sa maraming mga paraan sa bash batay sa iba't ibang mga uri ng mga delimiters. Lumikha ng isang bash file gamit ang sumusunod na script upang maipakita kung paano nahahati ang data ng string sa bash. Ang isang halaga ng string ay kinuha bilang input. Hahatiin ng script na ito ang halaga ng $ text batay sa kalawakan. Narito, ang IFS ginagamit ang variable upang maitakda ang delimiter. `basahin` Ginagamit ang utos dito upang hatiin ang halaga ng teksto at iimbak ang mga halaga sa isang array. para sa loop ay ginagamit upang paulit-ulitin ang array at i-print ang halaga ng bawat elemento.

split.sh

#! / baseng / bash
# Magpasok ng isang halaga ng string
itinaponMagpasok ng isang halaga ng string
basahintext
# Itakda ang delimiter
IFS='
#Ipadala ang halaga ng $ text sa isang array batay sa space delimiter
basahin -saarr<<< '$ text'
# I-print ang bawat halaga ng array
para sahalagasa '$ {arr [@]}';
gawin
printf '$ halaga n'
tapos na

Output:

Patakbuhin ang iskrip.

$bashsplit.sh

Ang sumusunod na output ay lilitaw pagkatapos ng pagkuha ng input, Alamin ang Bash programming . Ang halaga ng pag-input na ito ay isang teksto ng tatlong mga salita. Kaya, ang string ay nahahati sa tatlong bahagi.

Maaari mong malaman ang higit pa tungkol sa paghahambing ng string mula sa ang tutorial na ito .

Pagbabago ng Kaso ng string

Karamihan sa mga wika ng scripting ay may mga built-in na function upang baguhin ang kaso ng data ng string. Ngunit ang kaso ng data ng string ay maaaring mabago sa bash sa pamamagitan ng paggamit `tr` utos o sa pamamagitan ng paggamit ': Itaas' at ': Mas mababa' mga keyword. Lumikha ng isang bash file na may sumusunod na script upang malaman ang mga paraan ng pagbabago ng kaso sa bash. Dito, ang unang data ng string ay na-convert sa uppercase sa pamamagitan ng paggamit ‘^^’ simbolo at ang pangalawang string ay na-convert sa maliit na titik sa pamamagitan ng paggamit `tr` utos `tr` hahanapin ng utos ang lahat ng malalaking titik sa string at i-convert ang mga character sa maliit na titik.

kaso.sh

#! / baseng / bash

#Ipasimula ang unang data ng string
teksto1='[Protektado ang email]'

#Print ang halaga ng $ text1 sa pamamagitan ng pag-convert ng lahat ng mga character sa uppercase
itinapon $ {email ^^}

#Ipasimula ang data ng pangalawang string
text2= 'Mga Basics Programming Basics'

#Print ang halaga ng $ text2 sa pamamagitan ng pag-convert ng lahat ng uppercase sa lowercase
itinapon $ text2 | NS [: itaas:] [: mas mababa:]

Output:

Patakbuhin ang iskrip.

$bashkaso.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Maaari mong malaman ang higit pa tungkol sa paghahambing ng string mula sa ang tutorial na ito .

Pumunta sa tuktok

Pagbasa ng data ng string sa pamamagitan ng loop

Gumagana ang data ng string bilang isang character array para sa anumang wika ng programa. Paano ‘ para sa 'Loop ay maaaring magamit upang basahin ang data ng string sa bash ay ipinapakita sa seksyong ito. Lumikha ng isang base file na may sumusunod na script upang mabasa ang bawat bahagi ng halaga ng string sa pamamagitan ng paggamit para sa loop.

readstr.sh

#! / baseng / bas
# Basahin ang bawat salita ng isang teksto sa pamamagitan ng paggamit para sa loop
para sahalagasaBash Programmingpara saang mga Nagsisimula
gawin
itinapon $ halaga
tapos na

Output:

Patakbuhin ang iskrip.

$bashreadstr.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Maaari mong malaman ang higit pa tungkol sa pag-ulit ng data ng string sa pamamagitan ng paggamit ng loop mula sa ang tutorial na ito .

Pumunta sa tuktok

Pagbabalik ng mga pabalik na code mula sa isang script at pagkuha ng ibang script

Ang isang bash script ay maaaring mahuli ang mga return code mula sa ibang script sa pamamagitan ng pagtawag sa script at paggamit '$?' upang basahin ang halaga ng pagbabalik. Ipagpalagay, ang isang bash file na pinangalanan una.sh nagbabalik ng isang code pagkatapos ng pagpapatupad. Lumikha ng isa pang bash file na pinangalanan pangalawa.sh at idagdag ang sumusunod na script upang mahuli ang halaga ng pagbabalik at gumawa ng iba pang mga gawain. Ang code ng parehong mga file ay ibinibigay sa ibaba. una.sh ang file ay tatawag mula sa pangalawa.sh file sa simula ng script. una.sh ay magbabalik ng isang exit code batay sa halaga ng pag-input. pangalawa.sh ay mahuhuli ang code sa pamamagitan ng '$?' at ihambing sa 1. Kung ang parehong mga halaga ay pantay-pantay pagkatapos ito ay mai-print, Ang input number ay mas malaki sa 100 , kung hindi man ay mai-print ito, Ang input number ay mas mababa sa o katumbas ng 100 .

una.sh

#! / baseng / bash

itinapon 'Magpasok ng isang numerong halaga'
basahinn

# Suriin ang halaga ng pag-input ay mas mababa sa o katumbas ng 100 o hindi
kung [[ $ n -ang 100 ]]
tapos
labasan 0
iba pa
labasan 1
maging

pangalawa.sh

#! / basahan / bash

#Ipatupad ang file, una.sh
bash 'first.sh'

# Suriin ang return code ay katumbas ng 1 o hindi
kung [ $? -eq 1 ]
tapos
itinapon 'Ang input number ay mas malaki sa 100'
iba pa
itinapon 'Ang input number ay mas mababa sa o katumbas ng 100'
maging

Output:

Patakbuhin ang iskrip.

$bashpangalawa.sh

Ang sumusunod na output ay lilitaw kapag ang script ay naisakatuparan ng 55 at 110 sa loob ng dalawang beses.

Pumunta sa tuktok

Pagbasa at pagsusulat sa mga file

Ang pagbabasa at pagsusulat ng mga file ay karaniwang kinakailangan ng bash program. Ang Bash ay walang anumang built-in na function tulad ng ibang wika upang mabasa o isulat ang file. Mayroong maraming mga paraan upang basahin ang file sa bash. Ang pinakakaraniwang paraan upang mabasa o sumulat ng isang file sa bash ay gumagamit ng `pusa` utos Ngunit ang utos na ito ay ginagamit upang basahin ang buong nilalaman ng file nang paisa-isa. Maaari mo ring basahin ang anumang linya ng file sa pamamagitan ng linya sa pamamagitan ng paggamit ng anumang loop at `basahin` utos Gumagamit ng redirect operator, ‘>’ , maaari kang magsulat ng data sa anumang file sa bash. Kung nais mong idagdag ang data sa anumang file kung gayon kailangan mong gamitin '>>' operator Ang parehong mga pagpapatakbo ng pagbabasa at pagsusulat ng file ay ipinapakita sa susunod na bahagi ng seksyong ito.

Nagbabasa ng file sa bash

Lumikha ng isang bash file gamit ang sumusunod na script upang mabasa ang isang mayroon nang file na pinangalanang ‘ hardware.txt ’. Ang nilalaman ng file na ito ay ibinibigay sa ibaba. Sa script, ang buong nilalaman ng file ay binabasa ng `pusa` utos muna at susunod, habang ginagamit ang loop upang mabasa ang linya ng file sa pamamagitan ng linya.

hardware.txt

Subaybayan
Keyboard
Mouse
Scanner
Printer

readfile.sh

#! / baseng / bash

itinapon 'Pagbabasa ng file gamit ang cat command'

# Basahin ang nilalaman ng file gamit ang `cat` command
nilalaman='pusahardware.txt'
itinapon $ nilalaman

itinapon 'Pagbabasa ng linya ng file sa pamamagitan ng linya gamit ang loop'

# Italaga ang filename
filename='hardware.txt'

# Ang bawat linya ng file ay mababasa ng bawat pag-ulit ng loop
habang basahinlinya;
gawin
# i-print ang linya
itinapon $ linya
tapos na<$ filename

Output:

Patakbuhin ang mga sumusunod na utos.

$pusahardware.txt
$bashreadfile.sh

Dito, mai-print ng unang utos ang nilalaman ng file, hardware.txt nang walang pagpapatakbo ng anumang bash script at tatakbo ng pangalawang utos ang script ng readfile.sh at i-print ang nilalaman ng file nang dalawang beses sa pamamagitan ng paggamit `pusa` utos at `basahin` utos na may habang loop. Maaari mo itong bisitahin pagtuturo upang malaman ang higit pa tungkol sa pagbabasa ng linya ng file sa pamamagitan ng linya.

Pagsusulat ng file sa bash

Lumikha ng isang bash file na may sumusunod na script upang magsulat ng bagong nilalaman sa isang bagong file at idagdag ang data sa file na iyon.

writefile.sh

#! / baseng / bash

itinapon 'Maglagay ng ilang teksto'
#Basahin ang data ng string
basahinstr1
# Magdagdag ng data ng pag-input sa file sa kauna-unahang pagkakataon
itinapon $ str1 >pagsubok.txt

itinapon 'Maglagay ng iba pang teksto'
#Basahin ang isa pang data ng string
basahinstr2
# Magdagdag ng data ng pag-input sa dulo ng file
itinapon $ str2 >>pagsubok.txt

# Ipakita ang buong nilalaman ng file
itinapon 'pusapagsubok.txt'

Output:

Patakbuhin ang iskrip.

$bashwritefile.sh

Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script.

Pumunta sa tuktok

Mga tubo

Ginagamit ang tubo upang mai-redirect ang anumang output ng utos sa iba pang input ng utos. Maaari itong magamit sa iba't ibang mga uri ng mga bash command upang makabuo ng tukoy na output. Ang karaniwang input ay konektado sa karaniwang output sa Linux sa pamamagitan ng tubo. Kailangan mong itakda ang utos nang magkakasunod sa tubo (|) na simbolo upang makuha ang nais na output. Dalawa o higit pang mga utos ay maaaring maisakatuparan magkasama sa isang solong utos sa pamamagitan ng paggamit ng tubo. Kailangan mong magpatupad ng maraming mga utos sa maraming mga linya nang walang tubo upang gawin ang parehong gawain. Kaya, ang paggamit ng tubo ay kapaki-pakinabang para sa paggawa ng maraming uri ng mga gawain sa isang maikling form.

syntax:

utos1|utos2|...

Dito, ang output ng command1 ay ipapasa bilang input ng command2.

Ang parehong uri ng gawain ay ginagawa sa tubo at walang tubo sa susunod na bahagi ng seksyon na ito. Ipagpalagay na ang isang file ng teksto ay pinangalanan marks.txt ay ibinigay sa mga sumusunod na data.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Kailangan mong ayusin ang data ng file at alamin at mai-print ang lahat ng pagpasok ng pangalang estudyante na 'K oo ' . Maaari mong gawin ang gawaing ito sa pamamagitan ng pagpapatakbo ng maraming mga utos nang hindi gumagamit ng isang tubo na ipinapakita sa susunod na seksyon. Ang mga sumusunod na utos ay kailangang tumakbo upang makuha ang nais na output. Ang unang utos ay uuriin ang file. Hahanapin ng pangalawang utos ang entry na ‘K oo ' gamit ang ` mahigpit na pagkakahawak `utos at iimbak ang output sa isang temp.txt file Ang ikatlong utos ay bibilangin ang kabuuang mga linya ng a temp.txt file sa pamamagitan ng paggamit `wc` utos

$pag-uri-uriinmarks.txt
$mahigpit na pagkakahawak 'Keya'marks.txt>temp.txt
$wc -angtemp.txt

Output:

Dalawang mga entry ng mag-aaral, 'Keya' umiiral sa file. Kaya pagkatapos ng pagpapatakbo ng mga utos sa itaas, lilitaw ang sumusunod na output.

Madali mong pagsamahin ang tatlong mga utos sa itaas at makuha ang parehong output sa pamamagitan ng pagpapatakbo ng isang solong utos sa isang tubo na ipinapakita sa sumusunod na utos. Walang kinakailangang pansamantalang file dito upang makuha ang output. Dito, ang output ng ` pag-uri-uriin ipapasa ang `utos bilang input ng` mahigpit na pagkakahawak `utos at ang output ng` mahigpit na pagkakahawak ipapasa ang `utos bilang input para sa `wc` utos

$pag-uri-uriinmarks.txt| mahigpit na pagkakahawak 'Keya' | wc -ang

Output:

Sa pagpapatakbo ng utos sa itaas makakakuha ka ng sumusunod na output tulad ng output ng nakaraang utos. Ang output ng utos ay magiging 2.

Pumunta sa tuktok

Konklusyon:

Ang pinaka-kapaki-pakinabang at kinakailangang mga paksa ng bash scripting na wika ay sinubukan na sakupin sa tutorial na ito. Sana, makinabang ang mambabasa pagkatapos basahin ang tutorial na ito at mas mahusay na makapagsulat ng bash script.