Umhlahlandlela wabaqalayo ku-BASH - Izimo Nokuhluka

Isingeniso

Siyakwamukela engxenyeni yesithathu "Umhlahlandlela Wabaqalayo BASH". Uma ulahlekelwe izihloko ezimbili zangaphambilini, cishe uzofuna ukwazi ukuthi yini eyenza lo mhlahlandlela uhluke kwezinye iziqondiso ze-BASH scripting.

Lo mhlahlandlela ubhalwa ngummemeteli ophelele ku-BASH futhi uma umfundi efunda njengoba ngifunda. Ngisho noma ngingumshayeli ku-BASH Ngivela ngemuva kwesizinda sezokuthuthukiswa kwesofthiwe nakuba iningi lezizinto engizibhalele kube yindawo yesikhulumi seWindows.

Ungabona iziqondiso ezimbili zokuqala ngokuvakashela:

Uma ususha ku-BASH scripting Ngincoma ukufunda iziqondiso ezimbili zokuqala ngaphambi kokuqhubeka nalena.

Kulo mhlahlandlela ngizobe ngigcizelela indlela yokusebenzisa izitatimende ezinemibandela yokuhlola ukufaka komsebenzisi nokulawula ukuthi isebenza kanjani umbhalo.

Faka i-rsstail

Ukuze ulandele lo mhlahlandlela uzodinga ukufaka isicelo somugqa womyalo esibizwa nge-rsstail esetshenziswa ukufunda ama- RSS feeds .

Uma usebenzisa uhlobo lokusabalalisa okusekelwe Debian / Ubuntu / Mint lokhu okulandelayo:

sudo ukufinyelela-get install rsstail

Ukuze i- Fedora / i-CentOS njll faka lokhu okulandelayo:

Yum ufake rsstail

Ukuze uvule ukuvula uhlobo olulandelayo:

Faka i-rsstail

Isisho se-IF

Vula isiphetho bese udala ifayela elibizwa ngokuthi i-rssget.sh ngokuthayipha okulandelayo:

sudo nano rssget.sh

Ngaphakathi komhleli we-nano faka umbhalo olandelayo:

#! / bin / bash
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;

Londoloza ifayela ngokucindezela i-CTRL no-O bese uphuma ngokucindezela i-CTRL no-X.

Sebenzisa iskripthi ngokuthayipha okulandelayo:

sh rssget.sh

Iskriphthi sizobuyela ohlwini lwezihloko kusuka ku-feed ye-linux.about.com RSS.

Akuyona iskriphthi ewusizo kakhulu ngoba ithola kuphela izihloko kusuka kokusondeza okukodwa kwe-RSS kodwa isindisa ukukhumbula indlela eya ku-Linux.about.com RSS feed.

Vula iskripthi se-rssget.sh ku-nano futhi uhlele ifayela ukuze ubukeke kanje:

#! / bin / bash

uma [$ 1 = "verbose"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Phinda usebenzise iskripthi ngokuthayipha okulandelayo:

sh rssget.sh verbose

Lesi sikhathi ukuphakelayo kwe-RSS kubuya nesihloko, isixhumanisi nencazelo.

Ake sihlaziye iskripthi ngemininingwane ethile:

I #! / Bin / bash ibonakala kuzo zonke izikripthi esizibhalayo. Umugqa olandelayo ngokuyisisekelo ubheka imingcele yokufaka yokuqala enikezwa umsebenzisi futhi uyayifanisa negama elithi "verbose". Uma ipharamitha yokufaka negama elithi "verbose" lifana nemigqa ephakathi kwe- fi ne- fi iyasebenza.

Isikripthi esingenhla kusobala siphutha. Kwenzekani uma unganikeli ipharamitha lokufaka nhlobo? Impendulo uthola iphutha eceleni kwemigqa ye-opharetha engalindelekile.

Esinye isiphambeko esikhulu ukuthi uma unganikeli igama elithi "verbose" akukho lutho olwenzekayo nhlobo. Okungcono uma unganikeli igama elithi verbose iskripthi singabuyela uhlu lwezihloko.

Sebenzisa futhi i-nano ukuze uhlele ifayela le-rssget.sh bese ulungisa ikhodi kanje:

#! / bin / bash

uma [$ 1 = "verbose"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Londoloza ifayela bese uligijima ngokuthayipha okulandelayo:

sh rssget.sh verbose

Uhlu lwezihloko, izincazelo kanye nezixhumanisi luzovela. Manje ugijimise futhi kanje:

sh rssget.sh izihloko

Lesi sikhathi nje kuphela uhlu lwezihloko ezivela.

Ingxenye eyengeziwe yeskripthi isendleleni engu-4 futhi ingenisa esinye isitatimende. Ngokuyinhloko iskripthi sisho manje uma i-parameter yokuqala igama elithi "verbose" lithola incazelo, izixhumanisi kanye nezihloko zokuphakelayo kwe-RSS kodwa uma i-parameter yokuqala kungenye enye nje ithola uhlu lweziqu.

Isikripthi sithuthukile kancane kodwa sisalokhu siphutha. Uma uhluleka ukungena ipharamitha uzothola iphutha. Ngisho noma uhlinzeka ipharamitha, nje ngokuthi awufuni i-verbose ayisho ukuthi ufuna iziqu kuphela. Kungenzeka ukuthi usanda kufaka i-verbose engalungile ngesibonelo noma kungenzeka ukuthi uthayiphe amajuba okungenasisekelo.

Ngaphambi kokuba sizame ukusula lezi zinkinga ngifuna ukukhombisa umyalo owodwa owodwa ohamba nenkulumo ye-IF.

Hlela iskripthi sakho se-rssget.sh ukuze ubukeke kanje:

#! / bin / bash

uma [$ 1 = "konke"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Nganquma ukulahla igama elithi verbose futhi ngilishintsha nakho konke. Lokho akuyona ingxenye ebalulekile. Isikripthi esingenhla sethula i- elif okuyindlela encane yokusho i-ELSE IF.

Manje script isebenza kanje. Uma ugijima sh rssget.sh konke uthola izincazelo, izixhumanisi nezihloko. Uma kunalokho uvele ugijime incazelo ye- sh rssget.sh uzothola izihloko nezincazelo. Uma unikeza noma yiliphi elinye igama uzothola uhlu lweziqu.

Lokhu kwethula indlela yokusheshisa ngokuzwakalisa uhlu lwezitatimende ezinemibandela. Enye indlela yokwenza i-ELIF ukusebenzisa lokho okuyaziwa ngokuthi izithakazelo ze-IF ezidumile.

Lokhu okulandelayo yisibonelo esibonisa ukuthi izitatimende ze-IF ezisemsebenzini zisebenza kanjani:

#! / bin / bash

uma [$ 2 = "aboutdotcom"]
ke
uma [$ 1 = "konke"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
okunye
uma [$ 1 = "konke"]
ke
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi

Zizwa ukhululekile ukuthayipha konke okukuyo uma uthanda noma ukukopisha bese uwunamathisela kufayela lakho le-rssget.sh.

Isikripthi esingenhla sifaka ipharamitha yesibili evumela ukuthi ukhethe noma "i-about.com" noma i- "lxer.com" ngokuphakelayo kwe-RSS.

Ukuze usebenze uthayipha okulandelayo:

sh rssget.sh konke mayelana ne-aboutdotcom

noma

sh rssget.sh wonke u-lxer

Ngokuqinisekile ungakwazi ukufaka yonke indawo ngezincazelo noma izihloko ukunikeza izincazelo nje noma iziqu nje.

Ngokuyinhloko ikhodi ngenhla ithi uma i-parameter yesibili i-aboutdotcom bese ubuka okwesibili uma isitatimende esifana neskripthi sangaphambilini, uma ngabe ipharamitha yesibili i-lxer bese ubheka ngaphakathi noma isitatimende futhi ukuthi unqume ukuthi uzobonisa izihloko, izincazelo noma konke.

Lelo script linikezwa nje njengesibonelo senkulumo ye-IF eyakhelwe isidleke futhi kukhona izinto eziningi ezingalungile ngalelo script kungathatha enye into ukuze ichaze konke. Inkinga eyinhloko ukuthi akuyona into elula.

Cabanga ukuthi ufuna ukufaka esinye isidlo se-RSS njenge-Dailyday Linux User noma i-Linux Namuhla? Iskripthi sasizoba esikhulu futhi uma unqume ukuthi ufuna isitatimende sangaphakathi se-IF sishintshe kuzodingeka usishintshe ezindaweni eziningi.

Nakuba kunesikhathi nendawo ye-IF eyakhiwe kufanele isetshenziswe kancane. Ngokuvamile kuyindlela yokucatshangisa ikhodi yakho ukuze ungadingi i-IF enesizotha nhlobo. Ngizofika kulokhu kulesi sihloko esizayo.

Manje ake sibheke ukulungisa inkinga yabantu abafaka imingcele ye-duff. Isibonelo kusikripthi esingenhla uma umsebenzisi engena into ngaphandle kokuthi "aboutdotcom" njengepharamitha yesibili bese uhlu lwalezi zihloko luvela ku-RSS feed kusuka ku-LXER kungakhathaliseki ukuthi umsebenzisi ufake i-lxer noma cha.

Ngaphezu kwalokho uma umsebenzisi engangena "konke" noma "incazelo" njenge-parameter yokuqala bese okuzenzakalelayo luhlu lwezihloko okungenzeka noma cha lokho umsebenzisi akuhlosile.

Bheka iskripthi esilandelayo (noma ukopishe bese uyinamathisela kufayela lakho le-rssget.sh.

#! / bin / bash

uma [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ke
uma [$ 1 = "konke"] || [$ 1 = "incazelo"] || [$ 1 = "isihloko"]
ke
uma [$ 2 = "aboutdotcom"]
ke

uma [$ 1 = "konke"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
okunye
uma [$ 1 = "konke"]
ke
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi

Into yokuqala okumele uyiqaphele ukuthi iskripthi sesifinyelele kakhulu futhi ungabona masinyane ukuthi ukuphuma kokulawulwa kwe-IF kungenziwa kanjani.

I-bit ebalulekile kule script yi-IF statement || Isitatimende SIKHO isigaba kulayini 2 nolayini 4.

I || imelela OR. Ngakho umugqa uma [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] ihlola ukuthi i-parameter yesibili ilinganiswe ne "aboutdotcom" noma "lxer". Uma kungenjalo isisho se-IF siqedile ngoba asikho esinye isitatimende se- IF enkulu yangaphandle .

Ngokufanayo emgqeni 4 umzila uma [$ 1 = "konke"] || [$ 1 = "incazelo"] || [$ 1 = "isihloko"] uhlola ukuthi ngabe i-parameter yokuqala ilinganiswe noma "konke" noma "incazelo" noma "isihloko".

Manje uma umsebenzisi egijima sh rssget.sh amazambane ushizi lutho abuyiselwa kanti ngaphambi kokuba bathole uhlu lweziqu ezivela ku-LXER.

Okuphambene nalokho || i &&. I-operator ye-&& imele i-AND.

Ngizokwenza ukuthi iskripthi sibonakale njengobusuku obunzima kodwa yenza isheke lonke esibalulekile ukuqinisekisa ukuthi umsebenzisi unikeze amapharamitha angu-2.

#! / bin / bash

uma [$ # -eq 2]
ke

uma [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ke
uma [$ 1 = "konke"] || [$ 1 = "incazelo"] || [$ 1 = "isihloko"]
ke
uma [$ 2 = "aboutdotcom"]
ke

uma [$ 1 = "konke"]
ke
rsstail -d-l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
okunye
uma [$ 1 = "konke"]
ke
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "incazelo"]
ke
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
okunye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi

I-bit kuphela eyengeziwe kulowo mbhalo ingenye ye-statement yangaphandle ye-IF kanje: uma [$ # -eq 2] . Uma ufunda lesi sihloko mayelana nemingcele yokufaka uzokwazi ukuthi i-$ # ibuyisela inani lezinombolo zemingcele yokufaka. I-yeq imelela ukulingana. Ngakho-ke isitatimende se-IF sihlola ukuthi umsebenzisi ungenise imingcele engu-2 futhi uma kungenjalo nje ukuphuma ngaphandle kokwenza noma yini. (Not ikakhulukazi nobungane).

Ngiyaqaphela ukuthi le tutorial ihamba kakhulu. Akukho okungaphezulu okumele ukumboze kuleli sonto kodwa ngifuna ukusiza ukulungisa umbhalo ngaphambi kokuqeda.

Umyalo owodwa wokugcina okudingeka ufunde mayelana nezitatimende ezinemibandela isitatimende se-CASE.

#! / bin / bash


uma [$ # -eq 2]
ke
icala lika- $ 2 ku
i-aboutdotcom)
icala eliphakathi kwe- $ 1
konke)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;;;
incazelo)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;;;;
isihloko)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;;;
esac
;;;;
i-lxer)
icala eliphakathi kwe- $ 1
konke)
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
;;;;
incazelo)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;;;
isihloko)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;;;
esac
;;;;
esac
fi

Isitatimende secala siyindlela enhle yokubhala uma i-IF ELSE NOMA NOMA NOMA NOMA NOMA.

Isibonelo lokhu logic

Uma izithelo = ubhanana
KENA lokhu
UKUSEBENZA IF IF izithelo = ama-oranges
KENA lokhu
UKUBA IF IF izithelo = amagilebhisi
KENA lokhu
QAPHELA IF

ingabhalwa kabusha njenge:

icala izithelo
ubhanana)
yenza lokhu
;;;;
ama-oranges)
yenza lokhu
;;;;
amagilebhisi)
yenza lokhu
;;;;
esac

Ngokuyinhloko into yokuqala emva kwecala yinto ozoyiqhathanisa (ie izithelo). Khona-ke into ngayinye phambi kwamakaki yiyona into oyiqhathanisa ngokumelene nayo futhi uma ihambisana nemigqa eyandulele ;; uzogijima. Isitatimende secala sinqanyulwa nge-reac esac (okuyinto icala emuva).

Esikhathini script sakwa-rssget.sh isitatimende secala susa ezinye zezinyosi ezimbi nakuba zingayithuthuli ngempela.

Ukuze uthuthukise ngempela iskripthi engikudingayo ukwethula wena kuzo eziguquguqukayo.

Bheka ikhodi elandelayo:

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
i-aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
bonisa = ""
url = ""

uma [i-$ # -m 2] || [$ # -gt 2]
ke
bhala "ukusetshenziswa: rssget.sh [konke | incazelo | isihloko] [aboutdotcom | lxer]";
Phuma;
fi

icala eliphakathi kwe- $ 1
konke)
bonisa = "- d -l -u"
;;;;
incazelo)
bonisa = "- d -u"
;;;;
isihloko)
bonisa = "- u"
;;;;
esac

icala lika- $ 2 ku
i-aboutdotcom)
url = $ aboutdotcom;
;;;;
i-lxer)
url = $ lxer;
;;;;
esac
i-rsstail $ ibonisa i-$ url;

Ukuhlukahluka kuchazwa ngokukunika igama bese ulinikezela inani. Esikhathini esingenhla okulandelayo kukhona izabelo eziguqukayo:

lxer = "lxer.com/module/newswire/headlines.rss"
i-aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
bonisa = ""
url = ""

Iskripthi sikhululeka ngokushesha ngokusebenzisa iziguquguquko. Isibonelo, ipharamitha ngayinye iphathwa ngokwehlukile futhi ngakho-ke ayikho izitatimende ze-IF ezidlekile.

Ukuhlukahluka kokubonisa manje kusethelwe kuye ngokuthi ngabe ukhethe konke, incazelo noma isihloko kanye nokuhlukahluka kwe-url kusethelwe kunani loguquko lwe-aboutdotcom noma ukubaluleka kokuhluka kwe-lxer kuye ngokuthi ngabe ukhethe i-aboutdotcom noma i-lxer.

Umyalo we-rsstail manje kufanele usebenzise ukubaluleka kokubonisa ne-url ukuze usebenze kahle.

Ngenkathi izinguquko zihlelwa nje ngokuzinikeza igama, ukuzisebenzisa ngempela kufanele ubeke uphawu lwe $ phambi kwazo. Ngamanye amagama okuguquguqukayo = inani libeka inani eliguquguqukayo kunani kanti ukuguquguquka kwe-$ kusho ukunginika okuqukethwe kokuguquguqukayo.

Okulandelayo yiskripthi sokugcina salesi sifundo.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
i-aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
dailydaylinususer = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
ukusetshenziswa = "ukusetshenziswa: rssget.sh [konke | incazelo | isihloko] [lxer | aboutdotcom | daydaylinuxuser | linuxtoday]"
bonisa = ""
url = ""

uma [i-$ # -m 2] || [$ # -gt 2]
ke
sebenzisa ukusetshenziswa kwe-$;
Phuma;
fi

icala eliphakathi kwe- $ 1
konke)
bonisa = "- d -l -u"
;;;;
incazelo)
bonisa = "- d -u"
;;;;
isihloko)
bonisa = "- u"
;;;;
*)
sebenzisa ukusetshenziswa kwe-$;
Phuma;
;;;;
esac

icala lika- $ 2 ku
i-aboutdotcom)
url = $ aboutdotcom;
;;;;
i-lxer)
url = $ lxer;
;;;;
linuxtoday)
url = $ linuxtoday;
;;;;
nsuku zonke)
url = $ nsuku zonke;
;;;;
*)
sebenzisa ukusetshenziswa kwe-$;
Phuma;
esac

i-rsstail $ ibonisa i-$ url;

Iskripthi esingenhla sifaka okunye okuphakelayo kwe-RSS futhi kukhona ukuhlukahluka kokusetshenziswa okutshela umsebenzisi ukuthi angayisebenzisa kanjani iskripthi uma kungenjalo bengenayo iziguquli ezimbili noma bangena izinketho ezingalungile zezinguquko.

Isifingqo

Lokhu bekuyi-athikili yama-epicile futhi kungenzeka ukuthi ihambe kakhulu kakhulu kakhulu. Esiqondisweni esilandelayo ngizokukhombisa zonke izinketho zokuqhathanisa zezimpawu ze-IF futhi kusengaphezulu okuningi okumele ukhulume ngokuqondene neziguquguquko.

Kukhona okuningi okungenziwa ukuze kuthuthukiswe iskriphthi esingenhla futhi lokhu kuzokwenziwa eziqondisweni ezizayo njengoba sihlola izingodo, ama- grep nezinkulumo ezivamile.

Bheka ukuthi Ungayenza kanjani (Scroll phansi ngaphasi kwemikhakha ukuze ubone uhlu lwama-athikili) ingxenye ye-inux.about.com ukuthola iziqondiso eziwusizo ezengeziwe kusuka kokubili kokuqalisa iWindows ne-Ubuntu ukusetha umshini oqobo usebenzisa amabhokisi we-GNOME .