Phau Ntawv Tshiab Pib Ntsuam Xyuas Kuab Nkab - Cov Kaw thiab Cov Qhab Nia

Taw qhia

Txais tos rau peb sab ntawm "Cov Phau Ntawv Hloov Tshiab Rau Kev Kuaj". Yog hais tias koj tau ploj lawm yav dhau los ob cov khoom ces koj yuav xav paub seb ua li cas ua rau phau ntawv qhia no sib txawv rau lwm phau ntawv qhia txog BASH.

Phau ntawv no yog sau los ntawm ib qho ua tiav tshiab rau BASH thiab yog li nyeem ntawv koj kawm thaum kuv kawm. Whilst kuv yog ib tug novice rau BASH Kuv tuaj ntawm ib qho kev lag luam software tom qab txawm tias feem ntau ntawm cov khoom uas kuv tau sau tau ua rau lub qhov rais platform.

Koj tuaj yeem pom thawj thawj ob phau ntawv los ntawm:

Yog tias koj tau hloov tshiab rau daim ntawv BASH kuv xav kom koj nyeem thawj ob phau ntawv ua ntej koj tuaj nrog qhov no.

Nyob rau hauv phau ntawv no kuv yuav tsum qhia qhov yuav ua li cas siv cov lus sau cai los ntsuam xyuas cov neeg tawm tswv yim thiab tswj kom ua li cas ib tsab ntawv ua haujlwm.

Nruab rsstail

Yuav kom ua raws li phau ntawv qhia no koj yuav tsum nruab ib daim ntawv thov kab lus hu ua rsstail uas yog siv los nyeem RSS pub .

Yog hais tias koj siv lub Debian / Ubuntu / Mint raws li cov khoom faib hauv qab no:

sudo apt-mus nruab rsstail

Rau Fedora / CentOS yam nram qab no:

yum nruab rsstail

Rau openSUSE ntaus cov hauv qab no:

zypper nruab rsstail

Tsab ntawv IF

Qhib cov davhlau ya nyob twg thiab tsim ib daim ntawv hu ua rssget.sh los ntawm sau cov hauv qab no:

sudo nano rssget.sh

Tsis pub dhau lub nano editor sau cov ntawv nram qab no:

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

Tseg tau cov ntaub ntawv los ntawm nias CTRL thiab O thiab tawm ces nias CTRL thiab X.

Sau cov tsab ntawv los ntawm sau cov hauv qab no:

sh rssget.sh

Tsab ntawv yuav rov qab sau npe ntawm cov npe ntawm linux.about.com RSS pub.

Nws tsis yog ib qho kev pab cuam overly vim nws tsuas yog retrieves lub npe los ntawm ib tus RSS pub, tiam sis nws tsis txuag nrog nco ntsoov txoj kev mus rau Linux.about.com RSS pub.

Qhib cov ntaub ntawv rssget.sh hauv nano dua thiab kho cov ntaub ntawv kom zoo raws li nram no:

#! / bin / bash

yog tias [$ 1 = "verbose"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus

Rov qab sau dua tshiab los ntawm sau cov hauv qab no:

sh rssget.sh verbose

Lub sij hawm no RSS pub rov qab los nrog lub npe, txuas thiab lus piav qhia.

Cia peb ntsuam xyuas cov ntawv hauv ib qho kev qhia me me:

Lub #! / Bin / bash tshwm nyob hauv txhua tsab ntawv peb sau. Cov kab tom ntej no zoo li thawj tus tawm tswv yim uas muab los ntawm tus neeg siv thiab muab piv rau lo lus "verbose". Yog hais tias qhov ntsuas parameter thiab lo lus "verbose" sib khi rau cov kab ntawm lub ces thiab cov fi yog khiav.

Cov ntawv saum toj no yog obviously flawed. Yuav ua li cas yog tias koj tsis muab ib qho kev tawm tswv yim txhua? Cov lus teb yog koj tau txais ib qho yuam kev raws li cov kab uas tsis tau npaj txhij txog tus neeg teb xov tooj.

Lwm qhov yuam kev loj yog tias yog koj tsis muab lo lus "verbose" ces tsis muaj dab tsi tshwm sim txhua. Hom phiaj yog tias koj tsis muab cov lus sau rau hauv tsab ntawv sau xa rov qab cov npe.

Siv nano rov los hloov cov ntaub ntawv rssget.sh thiab hloov cov cai raws li nram no:

#! / bin / bash

yog tias [$ 1 = "verbose"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus

Tseg tau cov ntaub ntawv thiab khiav tawm los ntawm sau cov hauv qab no:

sh rssget.sh verbose

Cov npe, cov lus piav qhia thiab cov kev sib txuas yuav tshwm. Tam sim no khiav nws dua li nram no:

sh rssget.sh lub npe

Lub sijhawm no tsuas yog sau ib daim npe ntawm lub npe xwb.

Qhov ntxiv ntawm tsab ntawv no ntawm kab 4 thiab qhia txog lwm nqe lus. Yeej tsab ntawv tam sim no hais tias yog thawj tus parameter yog lo lus "verbose" tau txais cov lus piav qhia, cov kev sib txuas thiab cov npe rau RSS pub, tiam sis yog thawj tus parameter yog txhua yam uas tsuas yog tau txais ib daim ntawv teev npe.

Tsab ntawv sau tau zoo me ntsis tiam sis tseem yog qhov tseem ceeb. Yog tias koj tsis nkag mus rau ib qho parameter koj tseem yuav tau txais ib qho yuam kev. Txawm hais tias koj muab ib qho parameter, tsuas yog los ntawm kev hais tias koj tsis xav tau verbose tsis txhais hais tias koj xav tau lub npe xwb. Koj yuav tau sau cov lus piav qhia tsis ncaj ncees rau koj los yog koj tau ntaus cov nquab uas tsis yog qhov tseem ceeb.

Ua ntej peb sim thiab tshem tawm cov teeb meem no kuv xav qhia koj ib qho ntxiv lus hais tias mus nrog daim ntawv teev lus IF.

Kho koj cov ntawv rssget.sh kom zoo li nram no:

#! / bin / bash

yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
ces
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus

Kuv txiav txim siab los rhuav tshem ntawm lo lus verbose thiab hloov nws nrog tag nrho. Qhov no tsis yog qhov tseem ceeb. Tsab ntawv saum toj no qhia txog elif uas yog ib qho luv ntawm kev hais lus ELSE.

Tam sim no tsab ntawv ua haujlwm raws li nram no. Yog hais tias koj khiav sh rssget.sh tag nrho ces koj tau piav qhia, txuas thiab npe. Yog tias koj cia li cia li khiav r li koj cov lus qhia thiab cov lus piav qhia. Yog tias koj muab lwm lo lus koj yuav tau txais ib daim ntawv teev npe.

Qhov no qhia txog ib txoj kev ceev nrig tuaj nrog cov npe ntawm cov nqe lus sib tw. Lwm txoj kev ua ELIF yog siv cov lus uas paub tias yog lus Askiv uas tau sau tseg.

Cov nram qab no yog ib qho piv txwv uas qhia tau hais tias nws yuav ua li cas tau cov lus hais YOG:

#! / bin / bash

yog tias [$ 2 = "aboutdotcom"]
ces
yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
ces
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
lwm tus
yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
ces
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
nkaus

Xav tias dawb rau txhua yam uas yog nyob rau hauv yog tias koj nyiam los sis luam thiab muab tso rau hauv koj cov ntaub ntawv rssget.sh.

Tsab ntawv saum toj no qhia txog tus txheej txheem thib ob uas cia koj xaiv "ib ncig ntawm" los yog "lxer.com" hauv RSS pub.

Khiav nws koj ntaus hauv qab no:

sh rssget.sh tag nrho aboutdotcom

los yog

sh rssget.sh tag nrho cov lxer

Koj tuaj yeem hloov tag nrho cov lus piav qhia los yog lub npe muab cov lus piav qhia los yog lub npe xwb.

Yeej cov cai saum toj no hais tias yog tus thib ob parameter aboutdotcom ces saib thib ob yog cov lus uas yog tib qho los ntawm tsab ntawv teev lus ntxiv yog tus thib ob parameter yog lxer ces saib sab hauv yog nqe lus ntxiv rov qab txiav txim seb puas qhia lub npe, piav qhia los yog txhua yam.

Tsab ntawv sau no yog muab los ua ib qho piv txwv ntawm ib qho lus qhia uas tsis tau muaj kev tshab ntsej muag thiab muaj ntau yam tsis yog lawm ntawm tsab ntawv ntawd nws yuav siv lwm tsab xov xwm los piav rau lawv txhua tus. Lub ntsiab qhov teeb meem yog tias nws tsis yog scalable.

Xav txog tej yam koj xav ntxiv dua RSS pub xws li Everyday Linux neeg los yog Linux Niaj hnub no? Tsab ntawv yuav ua loj loj thiab yog tias koj txiav txim siab tias koj xav kom muaj cov lus qhia hauv IF los hloov koj yuav tsum hloov nws hauv ntau qhov chaw.

Whilst muaj ib lub sij hawm thiab qhov chaw rau ib qhov chaw uas yog lawv yuav tsum tau siv sparingly. Muaj feem ntau yog ib qho uas yuav rov qab ua kom koj cov cai xwv kom koj tsis tas yuav muaj qhov nested yog txhua. Kuv yuav tuaj rau cov ntsiab lus no hauv ib lub neej yav tom ntej.

Wb saib tam sim no kho qhov teeb meem ntawm cov neeg uas nkag mus tsis tau. Piv txwv nyob rau hauv tsab ntawv saum toj no yog tias tus neeg nkag mus rau ib yam dab tsi uas tsis yog "aboutdotcom" raws li qhov thib parameter ces ib daim ntawv teev cov khoom tshwm los ntawm RSS pub los ntawm LXER tsis hais seb tus neeg nkag mus rau lxer los yog tsis.

Tsis tas li ntawd yog tias tus neeg siv tsis sau "tag nrho" lossis "kev piav qhia" raws li qhov kev ntsuas 1 ces lub neej ntawd yog ib lub npe ntawm cov npe uas yuav los tsis tau yog tus neeg siv.

Saib ntawm tsab ntawv nram no (lossis luam thiab muab tso rau hauv koj cov ntaub ntawv rssget.sh.

#! / bin / bash

yog tias [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ces
yog tias [$ 1 = "tag nrho"] || [$ 1 = "description"] || [$ 1 = "title"]
ces
yog tias [$ 2 = "aboutdotcom"]
ces

yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
ces
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
lwm tus
yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
ces
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
nkaus
nkaus
nkaus

Thawj qhov uas yuav tsum tau nco yog tias tsab ntawv no tau txais qhov loj loj thiab koj tuaj yeem pom sai npaum li cas tawm ntawm kev tswj cov lus NEST YOG HAIV NEEG.

Lub sijhawm tseemceeb hauv tsab ntawv no yog cov lus sau Nqe lus THEN seem ntawm kab 2 thiab kab 4.

Lub || stands rau LOS SIS. Li ntawd, txoj kab yog [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] xyuas seb tus thib thib ob qhov sib npaug yog sib npaug li cas \ "aboutdotcom \" los yog \ "lxer \". Yog tias nws tsis yog ces daim IF tsab ntawv sau tiav yog vim tsis muaj lwm daim ntawv tshaj tawm rau sab nraud tshaj .

Zoo nkaus li ntawm kab 4 kab yog [$ 1 = "tag nrho"] || [$ 1 = "description"] || [$ 1 = "title"] tshev tawm seb qhov 1 parameter yog sib npaug li cas "tag nrho" lossis "piav qhia" lossis "npe".

Tam sim no yog hais tias tus neeg siv sau sh rssget.sh qos yaj ywm cheese tsis muaj dab tsi rov qab whereas ua ntej lawv yuav tau txais ib daim ntawv teev npe ntawm LXER.

Tus txheem ntawm || yog & &. Tus & tus neeg teb xov tooj stands rau THIAB.

Kuv yuav ua kom daim ntawv zoo li tseem zoo li ib tug npau suav phem tab sis nws ua rau tag nrho cov tseem ceeb kos kom paub meej tias tus neeg siv tau muab 2 tsis tau.

#! / bin / bash

yog tias [$ # -eq 2]
ces

yog tias [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ces
yog tias [$ 1 = "tag nrho"] || [$ 1 = "description"] || [$ 1 = "title"]
ces
yog tias [$ 2 = "aboutdotcom"]
ces

yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
ces
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
lwm tus
yog tias [$ 1 = "tag nrho"]
ces
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
ces
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
lwm tus
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
nkaus
nkaus
nkaus
nkaus
nkaus

Qhov tsuas yog ntxiv rau hauv tsab ntawv sau yog lwm nqe lus IF yog raws li nram no: yog [$ # -eq 2] . Yog tias koj nyeem tsab xov xwm txog cov lus qhia input koj yuav paub tias $ # rov qab suav ntawm cov xov tooj ntawm cov lus tsis muaj. The -eq tseem ceeb rau qhov sib npaug. Tsab ntawv sau yog tias tshuav tus neeg siv nkag nkag 2 thiab yog tias lawv tsis yog nws tawm tsis ua dab tsi. (Tsis yog tshwj xeeb yog cov phooj ywg).

Kuv paub hais tias cov ntawv nyeem no tau txais ntau heev. Tsis muaj ntau ntxiv los npog lub lim tiam no, tiam sis kuv xav pab txhim kho cov ntawv sau ua ntej peb ua tiav.

Qhov kawg lus kawg uas koj xav tau los kawm txog cov cai nqe lus yog CASE daim ntawv.

#! / bin / bash


yog tias [$ # -eq 2]
ces
case $ 2 hauv
aboutdotcom)
case $ 1 hauv
tag nrho)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;
piav qhia)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;;
npe)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;
esac
;;
lxer)
case $ 1 hauv
tag nrho)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;;
piav qhia)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;
npe)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
esac
;;
esac
nkaus

Cov ntaub ntawv no yog ib txoj kev zoo sau ntawv YOG HAIS TIAS YUAV TSUM MUAJ YOG HAIS TIAS YUAV TSUM MUAJ.

Piv txwv li no logic

YOG txiv hmab txiv ntoo = txiv tsawb
THOV no
ELSE YOG txiv hmab txiv ntoo = txiv kab ntxwv
THOV no
ELSE YOG txiv hmab txiv ntoo = txiv hmab
THOV no
YOG HAIS TIAS

yuav rov qab sau tau dua:

case txiv hmab txiv ntoo nyob rau hauv
bananas)
ua li no
;;
txiv kab ntxwv)
ua li no
;;
txiv hmab)
ua li no
;;
esac

Yeej yog thawj yam tom qab rooj plaub yog qhov koj yuav mus piv (piv txwv li txiv hmab txiv ntoo). Ces txhua yam khoom ua ntej lub nkhaus yog qhov uas koj tau muab piv tawm tsam thiab yog tias nws ntais cov kab ua ntej; yuav tsum khiav. Cov ntaub ntawv (case statement) muab xaus nrog qhov rov qab esac (uas yog rooj plaub rov qab).

Nyob rau hauv tsab ntawv rssget.shar cov ntaub ntawv tshem tawm qee qhov ntawm qhov chaw ua tsis txaus ntseeg txawm tias tsis yog kev txhim kho nws txaus.

Yuav kom txhim kho cov ntawv kuv yuav tsum qhia koj kom hloov tau.

Saib cov cai nram qab no:

#! / bin / bash

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

yog tias [$ # -lt 2] || [$ # -gt 2]
ces
ncha "kev pab: rssget.sh [tag nrho | piav qhia | npe] [aboutdotcom | lxer]";
tawm;
nkaus

case $ 1 hauv
tag nrho)
zaub = "- d -l -u"
;;
piav qhia)
zaub = "- d -u"
;;
npe)
zaub = "- u"
;;
esac

case $ 2 hauv
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
esac
rsstail $ zaub $ url;

Ib qho txawv kuj yog txhais los ntawm muab nws lub npe thiab muab tus nqi rau nws. Hauv qhov piv txwv saum toj no cov nram qab no yog cov haujlwm ua rau cov haujlwm:

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

Tsab ntawv no tseem ua haujlwm ntau dua los ntawm kev siv zog. Piv txwv li txhua tus parameter yog nyias cais nyias li thiab yog li tsis muaj cov lus nested IF.

Cov lus sib txawv ntawm qhov tam sim no yog nyob ntawm seb koj xaiv tag nrho, kev piav qhia los yog lub npe thiab qhov sib txawv ntawm url yog teem rau qhov nqi ntawm qhov kev sib txawv ntawm aboutdotcom lossis tus nqi ntawm qhov txawv ntawm qhov txawv ntawm qhov koj xaiv txog ddd los yog lxer.

Rsstail hais kom ua tam sim no tsuas yog siv cov nqi ntawm cov khoom thiab url khiav kom raug.

Whilst variables yog teem caij los ntawm kev muab lawv lub npe, kom tau siv lawv koj yuav tsum tso ib daim $ kos npe rau ntawm lawv xub ntiag. Lus hauv no teb Hauv lwm lo lus = variable nqis sib txawv rau ib tus nqi whereas $ kuj nceib txhais tau tias muab rau kuv tus txheem ntawm cov kuj sib txawv thiab.

Hauv qab no yog tsab ntawv kawg rau qhov kev nyeem no.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
everydaylinuxuser = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
kev pab = "siv: rssget.sh [tag nrho | piav qhia | npe] [lxer | aboutdotcom | everydaylinuxuser | linuxtoday]"
zaub = ""
url = ""

yog tias [$ # -lt 2] || [$ # -gt 2]
ces
ncha $ kev siv;
tawm;
nkaus

case $ 1 hauv
tag nrho)
zaub = "- d -l -u"
;;
piav qhia)
zaub = "- d -u"
;;
npe)
zaub = "- u"
;;
*)
ncha $ kev siv;
tawm;
;;
esac

case $ 2 hauv
aboutdotcom)
url = $ aboutdotcom;
;;
lxer)
url = $ lxer;
;;
linuxtoday)
url = $ linuxtoday;
;;
txhua txhua hnub)
url = $ everydaylinuxuser;
;;
*)
ncha $ kev siv;
tawm;
esac

rsstail $ zaub $ url;

Tsab ntawv saum toj no qhia txog RSS ntau dua thiab muaj kev pab kuj sib txawv uas qhia cov neeg siv yuav siv tsab ntawv li cas yog tias lawv tsis nkag mus rau 2 cov qhab nia los yog lawv sau tsis yog rau cov kev hloov.

Txoj kev xaus

Qhov no tau yog ib qho epic tshooj thiab tej zaum yuav mus dhau deb dhau sai sai. Nyob rau hauv phau ntawv qhia txuas ntxiv no kuv yuav qhia koj tag nrho cov kev sib piv kev xaiv rau YOG cov lus qhia thiab tseem muaj ntau yam ntxiv los tham txog nrog regards rau zog.

Muaj ntau yam ntxiv uas yuav ua tau los txhim kho cov ntawv sau saum toj no thiab qhov no yuav tau txais cov kev cob qhia yav tom ntej thaum peb tshawb cov loops, grep thiab kab lus qhia tas li.

Xyuas seb yuav ua li cas (Scroll hauv yav dhau los cov pawg pom ib daim ntawv teev cov khoom) seem ntawm l inux.about.com thiaj li nrhiav tau ntau ntawm cov kev pab cuam ntawm dual booting qhov rais thiab Ubuntu mus teeb pem lub tshuab virtual siv GNOME lub thawv .