Isikhokelo sokuqala kwi-BASH - Iimeko kunye neziNguquko

Intshayelelo

Wamkelekile kwingxenye yesithathu ye-"Guide Guide" ku-BASH ". Ukuba ulahlekelwe ngamacandelo amabini odlulileyo ke uyafuna ukwazi ukuba yintoni eyenza esi sikhokelo sihluke kwezinye izikhokelo ze-BASH scripting.

Esi sikhokelo sibhalwa ngumsizi opheleleyo kwi-BASH kwaye ngokokuba umfundi ufunda njengoko ndifunda. Nangona ndingumcebisi ku-BASH Ndivela kwisiqalo sokuphuhlisa i-software nakuba ezininzi zezinto endizibhalileyo ziye zisesiteji seWindows.

Uyabona izikhokelo ezimbini zokuqala ngokutyelela:

Ukuba unomtsha kwi-BASH scripting Ndincoma ukufunda izihlandlo ezimbini zokuqala ngaphambi kokuqhubeka nale.

Kule khokelo ndiya kubeka ingqalelo indlela yokusebenzisa izitatimende ezinemiqathango yokuvavanya igalelo lomsebenzisi kunye nokulawula indlela i-script isebenza ngayo.

Faka i-rsstail

Ukuze ulandele esi sikhokelo uza kufuneka ufake ifowuni yomyalelo obizwa nge-rsstail esetyenziswe ukufunda i- RSS feeds .

Ukuba usebenzisa i- Debian / Ubuntu / Mint uhlobo lokusabalalisa olusekelwe kulo lulandelayo:

sudo -pt get-rsstail

I- Fedora / i-CentOS njl njl

yum ufake efstail

Uhlobo oluvulekileSUSE oku kulandelayo:

zypper ufake efstail

I-IF statement

Vula isiphawuli kwaye udale ifayile ebizwa ngokuthi rssget.sh ngokuthayipha oku kulandelayo:

sudo nano rssget.sh

Kwi-nano editor faka umbhalo olandelayo:

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

Gcina ifayile ngokucinezela i-CTRL kunye ne-O uze uphume ngokucindezela i-CTRL ne-X.

Qalisa iskripthi ngokuthayipha oku kulandelayo:

sh rssget.sh

Iskripthi siza kubuyela uluhlu lwezihloko kwi-linux.about.com i-RSS feed.

Akusiyo isicatshulwa esisebenzisekayo kunokuba ithola kuphela izihloko ezivela kwisihlomelo esisodwa se-RSS kodwa igcina ukuba ikhumbule indlela eya kwi-Linux.about.com i-RSS feed.

Vula iskripthi se-rssget.sh nano kwakhona kwaye uhlele ifayile ukujonga ngale ndlela:

#! / bin / bash

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

Phinda uphinde uphinde ubhale ngokubhala ezi zilandelayo:

sh rssget.sh verbose

Eli xesha ukuhlaziywa kwe-RSS kubuya nesihloko, isiqhagamshelo kunye nencazelo.

Masihlaziye iskripthi kwingcaciso ethile:

I #! / Bin / bash ibonakala kuyo yonke i-script esiyibhalayo. Umgca olandelayo ukhangeleka kwi parameter yokuqala yokufakelwa inikezwa ngumsebenzisi kwaye uyayithelekisa kwigama elithi "verbose". Ukuba iparameter yempembelelo kunye negama elithi "verbose" lifana nemigca ephakathi kwee- fi kwaye igijime.

Isicatshulwa ngasentla sibonakala siphutha. Yintoni eyenzekayo xa unganikezeli ipharamitha yongenayo nonke? Impendulo uyifumana impazamo kunye nemigca yomqhubi ongalindelekanga.

Esinye isiphoso esikhulu kukuba ukuba awukunikezeli igama elithi "verbose" akukho nto iyenzeka nhlobo. Ngokufanelekileyo ukuba unganikezeli igama elithi verbose le script liza kubuya uluhlu lwezihloko.

Sebenzisa kwakhona i-nano ukuhlela ifayile ye-rssget.sh kwaye ulungise ikhowudi ngale ndlela:

#! / bin / bash

ukuba [i-$ 1 = "verbose"]
ngoko
rsstail -l -l -u http://z.about.com/6/o/m/linux_p2.xml;
enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Gcina ifayile uze uyisebenze ngokuthayipha oku kulandelayo:

sh rssget.sh verbose

Uludwe lwezihloko, iinkcazo kunye nekhonkco ziya kubonakala. Ngoku ugijime kwakhona ngokulandelayo:

sh rssget.sh izihloko

Eli xesha nje kuludwe lwemixholo.

Inxalenye eyongezelelweyo yeskripthi ibhalwe kumgca we-4 kwaye izisa enye inkcazo. Ngokuyinene isicatshulwa sithetha ngoku ukuba iparameter yokuqala igama elithi "verbose" lifumana inkcazo, izixhumanisi kunye nezihloko ze-RSS feed kodwa ukuba iparameter yokuqala nayiphi na enye ifumana uludwe lwezihloko.

Iskripthi siphucule kancinci kodwa sisenakonakala. Ukuba ungaphumeleli ukungena ipharamitha uya ku fumana iphutha. Nangona unikezela ipharamitha, nje ngokuthi awufuni i verbose ayithethi ukuba ufuna izihloko kuphela. Usenokuba uphawuleze u-verbose engalunganga ngokomzekelo okanye usenokuba uthayiphe amajuba angenanto engenanto.

Ngaphambi kokuba sizame ukucima le miba ndifuna ukukubonisa umyalelo owodwa ohamba kunye ne-IF statement.

Hlela iskripthi sakho se-rssget.sh ukujonga ngale ndlela:

#! / bin / bash

ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

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

Ndagqiba kwelokuba ndilahla igama elithi verbose kwaye ndithatha indawo yalo lonke. Leyo ayiyona nto ebalulekileyo. Isibhengezo esingentla sithumela i-elif eyindlela emfutshane yokuthetha i-ELSE IF.

Ngoku i script isebenza ngale ndlela ilandelayo. Ukuba usebenza shsk.sh zonke uze ufumane iinkcazo, izixhumanisi kunye nezihloko. Ukuba endaweni yoko usebenzise nje inkcazelo ye shsk.sh uza kufumana izihloko kunye neenkcazo. Ukuba unika elinye igama uya kufumana uluhlu lwezihloko.

Oku kufaka indlela yokukhawuleza ukuza kunye nenani leengxelo ezithintekayo. Enye indlela yokwenza i-ELIF kukusebenzisa oko kwaziwa ngokuba yi-IF eyaziwayo.

Oku kulandelayo umzekelo obonisa indlela ezenziweyo ngayo iingxelo ze-IF:

#! / bin / bash

ukuba [i-$ 2 = "i-aboutdotcom"]
ngoko
ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
enye
ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi

Zive ukhululekile ukuthayipha yonke into ukuba uyayithanda okanye uyikopishe kwaye uyihlanganise kwifayile yakho ye-rssget.sh.

Isibhengezo esingentla singenise ipharamitha yesi-2 evumela ukuba ukhethe okanye "i-about.com" okanye "lxer.com".

Ukuyisebenzisela uthayipha oku kulandelayo:

sh rssget.sh zonke i-aboutdotcom

okanye

sh rssget.sh zonke i-lxer

Unako ukubuyisela zonke izinto ngeenkcazelo okanye izihloko ukubonelela ngeenkcazelo nje okanye nje ngezihloko.

Ngokukodwa ikhowudi apha ngasentla ithi i-parameter yesibini i-aboutdotcom uze ukhangela isibini ukuba isitatimende esilinganayo kwiskripthi esedlule ukuba enye iparameter yesibini ibhekiselele ngaphakathi ukuba isitatimende kwakhona sigqibe ukuba ingaba zibonisa izihloko, iinkcazo okanye yonke into.

Le ngxelo ibonelelwa nje ngomzekelo wenkcazo ye-IF eyimvelo kwaye kukho izinto ezininzi ezingalunganga kuloo script kuya kuthatha enye into ukuba ichaze konke. Umba oyintloko kukuba awunakwenzeka.

Khawucinge ukuba ufuna ukufaka enye i-RSS feed ezifana ne-Daily Linux User okanye i-Linux namhlanje? Iskripthi siza kuba sikhulu kwaye ukuba wanquma ukuba ufuna ukuba inkcazo ye-IF yangaphakathi itshintshe kufuneka uyitshintshe kwiindawo ezininzi.

Nangona kukho ixesha kunye nendawo ye-IF eyimfuneko kufuneka isetyenziswe ngokukhawuleza. Ngokuqhelekileyo indlela yokuchasa ikhowudi yakho ukwenzela ukuba awuyidingi i-IF enesiqinisekiso nhlobo. Ndiza kuza kulo mbandela kwinqaku elizayo.

Makhe sijonge ekulungiseni umba wabantu abangena kwiiparitha ze-duff. Ngokomzekelo kwiphepha elingentla xa umsebenzisi engena into ngaphandle kwe "aboutdotcom" njengeparitha ye-2 ke uluhlu lwamagama luvela kwi-RSS feed ukusuka ku-LXER kungakhathaliseki ukuba umsebenzisi ungene lxer okanye cha.

Ukongeza xa umsebenzisi engangenisi "konke" okanye "inkcazo" njengeparimitha ye-1st ngoko-default iluhlu lwezihloko ezingenakho oko umsebenzisi abenjongo.

Khangela le script esilandelayo (okanye ikopi uze uyihlanganise kwifayile yakho ye-rssget.sh.

#! / bin / bash

ukuba [i-$ 2 = "aboutdotcom"] || [I-$ 2 = "i-lxer"]
ngoko
ukuba [i-$ 1 = "zonke"] || [$ 1 = "inkcazelo"] || [$ 1 = "isihloko"]
ngoko
ukuba [i-$ 2 = "i-aboutdotcom"]
ngoko

ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
enye
ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi

Into yokuqala ekufuneka uyiqaphele kukuba le script sele ithola ngokufanelekileyo kwaye unokukubona ngokukhawuleza ukuba uphumelele kanjani ukulawula i-IF ukuba iingxelo zingabakho.

Ibinzana ebalulekileyo kule script yi-IF statement || isitatimende THENI kwinqanaba 2 kunye nomgca 4.

|| umele i-OR. Ngoko umgca ukuba [i $ 2 = "aboutdotcom"] || [I-$ 2 = "i-lxer"] ihlola ukuba i-parameter yesibili ilingana ne "aboutdotcom" okanye "lxer". Ukuba akuyiyo ke ingxelo ye-IF igqibeleleyo kuba akukho nenye inkcazo yeyona yangaphandle IF.

Ngokufanayo kumgca 4 umgca ukuba [$ 1 = "zonke"] || [$ 1 = "inkcazelo"] || [$ 1 = "isihloko"] sihlola ukuba i-parameter ye-1 ilingana na "yonke" okanye "inkcazo" okanye "isihloko".

Ngoku ukuba umsebenzisi usebenzisa i-tssget.sh zetekisi, akukho nto ibuyiselwa kodwa ngaphambi kokuba bafumane uluhlu lweempawu ezivela kwi-LXER.

Okuchasene ne || &&. I && operator isekela NA.

Ndiya kwenza ukuba i-script ibonakale ngakumbi njengobusuku obunzima kodwa yenza isheke yonke ebalulekileyo ukuqinisekisa ukuba umsebenzisi unikezele iiparitha ezimbini.

#! / bin / bash

ukuba [i $ # -eq 2]
ngoko

ukuba [i-$ 2 = "aboutdotcom"] || [I-$ 2 = "i-lxer"]
ngoko
ukuba [i-$ 1 = "zonke"] || [$ 1 = "inkcazelo"] || [$ 1 = "isihloko"]
ngoko
ukuba [i-$ 2 = "i-aboutdotcom"]
ngoko

ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
enye
ukuba [i-$ 1 = "zonke"]
ngoko
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "inkcazelo"]
ngoko
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
enye
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi

Ingqungquthela kuphela eyongezelelweyo kweso sikripthi yimbi enye engaphandle kwe-IF ngolu hlobo lulandelayo: ukuba [i-$ # -eq 2] . Ukuba ufunda eli nqaku malunga nemigqaliselo yempembelo uya kukwazi ukuba i $ # ubuyisela inani leenombolo zamaparitha okufaka. I--eq imelela ukulingana. Ingxelo ye-IF ngoko ihlola ukuba umsebenzisi ungenise iiparitha ezimbini kwaye ukuba abazange baphume nje bengenzi nto. (Akunabomi).

Ndiyazi ukuba le tutorial iya kuba enkulu. Akukho nto eninzi yokuyibekela ngeli veki kodwa ndifuna ukukunceda ukuyihlaziya iskripthi ngaphambi kokuba sigqibe.

Umyalelo wokugqibela ofuna ukuba ufunde ngeemeko ezingqinelanayo yi-CASE statement.

#! / bin / bash


ukuba [i $ # -eq 2]
ngoko
i-$ 2 kwimeko
aboutdotcom)
kwimeko ye $ 1
konke)
rsstail -l -l -u z.about.com/6/o/m/linux_p2.xml
;;
inkcazelo)
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
;;
lxer)
kwimeko ye $ 1
konke)
rsstail -l -l -u http://lxer.com/module/newswire/headlines.rss
;;
inkcazelo)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;
isihloko)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
esac
;;
esac
fi

Inkcazo yecala iyindlela ecacileyo yokubhala UKUBA UKUBA UKUBA UKUBA NOMNTU UKUBA UMNTU NOMA.

Umzekelo lo mongo

UKUBA iziqhamo = ibhanana
KENA oku
UKUBA IF IF izithelo = ii-oranges
KENA oku
UKUBA IF IF izithelo = iidiliya
KENA oku
QAPHELA UKUBA

iyakubhalwa kwakhona ngokuthi:

kwimeko yeziqhamo
iibhanana)
ukwenza oku
;;
iionon)
ukwenza oku
;;
iidiliya)
ukwenza oku
;;
esac

Ngokuyinhloko into yokuqala emva kwimeko leyo uya kuqhathanisa (oko kukuthi izityalo). Emva koko into nganye phambi kweebakaki yinto othelekisa ngayo kwaye xa ihambelana nemigca ephambili ;; iya kubaleka. Ingxelo yecala ipheliswa ngo-reac esac (leyo ityala elingemuva).

Kwiskripthi se-rssget.sh imeko yesithenjwa isusa ezinye zeento ezinzima kodwa zingakhange ziphucule ngokwaneleyo.

Ukuphucula ngokwenene iskripthi endiyidingayo ukukwazisa kuzo iziguquko.

Khangela ikhowudi elandelayo:

#! / bin / bash

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

ukuba [i $ # -lt 2] || [i $ # -gt 2]
ngoko
bhekisela "ukusetyenziswa: rssget.sh [konke | inkcazelo | isihloko] [aboutdotcom | lxer]";
Phuma;
fi

kwimeko ye $ 1
konke)
bonisa = "- d -l -u"
;;
inkcazelo)
bonisa = "- d -u"
;;
isihloko)
bonisa = "- u"
;;
esac

i-$ 2 kwimeko
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
esac
i-rsstail $ ibonisa i-url ye-$;

Uguquko luchazwa ngokulunika igama uze ulinike ixabiso kuyo. Kulo mzekelo ukhankanywe apha ngentla zizinto ezikhoyo:

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

I-script ilawulwa ngokukhawuleza ngokusebenzisa iziguquko. Ngokomzekelo, nganye ipharamitha iphathwa ngokwahlukileyo kwaye ngoko akukho zitshilo ze-IF ezikuyo.

Ukutshintsha kweempawu ngoku kusetyenjwe ukuba ngaba ukhethe konke, inkcazo okanye isihloko kunye ne-variable variable ye-url isetyenziswe kwixabiso lentengo ye-aboutdotcom okanye ixabiso lentengo ye-lxer kuxhomekeke ukuba ngaba ukhethe malunga ne-orotot okanye i-lxer.

Umyalelo we-rsstail ngoku kufuneka usebenzise ukubaluleka kokubonisa kunye ne-url ukuqhuba ngokuchanekileyo.

Nangona iimpawu zihleli nje ngokuzinika igama, ukuzisebenzisa ngokufanelekileyo kufuneka ubeke uphawu lwemali phambi kwazo. Ngamanye amagama aguquguqukayo = xabiso lusethayipha ukuguquguquka kwixabiso ngelixa i-variable variable ye-$ zinika i-contents ye variable.

Oku kulandelayo yile script yokugqibela kule tutorial.

#! / bin / bash

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

ukuba [i $ # -lt 2] || [i $ # -gt 2]
ngoko
sebenzisa imali yokusebenzisa;
Phuma;
fi

kwimeko ye $ 1
konke)
bonisa = "- d -l -u"
;;
inkcazelo)
bonisa = "- d -u"
;;
isihloko)
bonisa = "- u"
;;
*)
sebenzisa imali yokusebenzisa;
Phuma;
;;
esac

i-$ 2 kwimeko
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
linuxtoday)
url = $ linuxtoday;
;;
nsuku zonke)
url = $ imihla ngemihla;
;;
*)
sebenzisa imali yokusebenzisa;
Phuma;
esac

i-rsstail $ ibonisa i-url ye-$;

Isibhengezo esingentla singenise ezinye iimpapasho ze-RSS kwaye kukho ukusetyenziswa okutshintshayo okuxelela umsebenzisi indlela yokusebenzisa iskripthi ukuba ngaba bangenayo iinguqu ezi-2 okanye bangena ezikhethiweyo ezikhethiweyo.

Isishwankathelo

Oku kuye kwaba yi-epic article kwaye mhlawumbi ihambe kakhulu ngokukhawuleza. Kwisikhokelo esilandelayo ndiya kukubonisa zonke iinketho zokuqhathanisa ukuba zichazwe iinkcukacha kwaye kusekho ezininzi ukuthetha ngazo ngokubhekiselele kwimimiselo.

Kukho okunye okunokwenziwa ukuba kuphuculwe iskripthi esingentla kwaye oku kuya kubalwa kwizikhokelo ezizayo njengoko sihlolisisa i-loops, i- grep kunye namazwi avamile.

Hlola indlela oya ngayo (Scroll down past categories to see list of articles) kwicandelo l inux.about.com ukuze ufumane izikhokelo ezinokubaluleka ngakumbi kwi -Windows ekhulayo kunye ne-Ubuntu ukuseka umatshini obonakalayo usebenzisa iibhokisi ze-GNOME .