Ro-ràdh
Fàilte don treas pàirt de "Tùs Luchd-tòiseachaidh gu BASH". Ma chaill thu an dà artaigil roimhe, is dòcha gum bi thu airson faighinn a-mach dè a tha a 'dèanamh an iùl seo eadar-dhealaichte ri treòrachadh sgriobtaichean BASH eile.
Tha an stiùireadh seo air a sgrìobhadh le neach-ionnsachaidh iomlan gu BASH agus mar leughadair a tha thu ag ionnsachadh fhad 'sa tha mi ag ionnsachadh. Ged a tha mi nam nuadh-eòlas gu BASH tha mi a 'tighinn bho leasachadh bathar-bog ged a tha a' mhòr-chuid de na rudan a sgrìobh mi air a bhith aig àrd-ùrlar Windows.
Chì thu a 'chiad dà threòrachadh le bhith a' tadhal air:
Ma tha thu ùr gu sgriobtadh BASH tha mi a 'moladh a bhith a' leughadh a 'chiad dà stiùireadh mus lean thu ris an fhear seo.
Anns an iùl seo bidh mi a 'sealltainn mar a chleachdas tu aithrisean co-chòrdail gus a bhith a' feuchainn a-steach luchd-cleachdaidh agus gus smachd a chumail air mar a tha sgriobt ag obair
Stàlaich rsstail
Gus an leanabh seo a leantainn, feumaidh tu iarrtas loidhne òrdain a stàladh ris an canar rsstail a tha air a chleachdadh gus feeds RSS a leughadh.
Ma tha thu a 'cleachdadh seòrsa sgaoileadh debian stèidhichte air Debian / Ubuntu / Mint na leanas:
sudo apt-faigh stàladh rsstail
Airson Fedora / CentOS etc tha na leanas a 'toirt a-steach:
cuir stad air rsstail
Airson seòrsa openSUSE na leanas:
zypper a stàladh rsstail
An aithris IF
Fosgail suas ceann-uidhe agus cruthaich faidhle ris an canar rssget.sh le bhith a 'sgrìobhadh na leanas:
sudo nano rssget.sh
Taobh a-staigh an deasaiche nano, cuir a-steach an teacsa a leanas:
#! / bin / bash
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Sàbhail am faidhle le bhith a 'putadh CTRL agus O agus an uairsin falbh le bhith a' putadh CTRL agus X.
Rach an sgriobt le bhith a 'sgrìobhadh na leanas:
sh rssget.sh
Tillidh an sgriobt liosta thiotalan bho RSS feed linux.about.com.
Chan e sgriobt thar cus feum a th 'ann oir tha e dìreach a' toirt air ais na tiotalan bho aon bhiadh RSS ach tha e a 'dèanamh cinnteach gun cuimhnich e an t-slighe gu RSS feed Linux.about.com.
Fosgail an sgriobt rssget.sh ann an nano a-rithist agus cruthaich am faidhle mar a leanas:
#! / bin / bash
ma tha [$ 1 = "verbose"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
fi
Rach an sgriobt a-rithist le bhith a 'sgrìobhadh na leanas:
sh rssget.sh verbose
An turas seo thig am feed RSS air ais leis an tiotal, an ceangal agus an tuairisgeul.
Leigamaid mion-sgrùdadh air an sgriobt:
Nochdaidh an #! / Bin / bash anns gach sgriobt a tha sinn a 'sgrìobhadh. Tha an ath loidhne gu h-àbhaisteach a 'coimhead air a' chiad pharaimear ionraidh a tha an neach-cleachdaidh a 'toirt seachad agus ga choimeas ris an fhacal "verbose". Ma tha am paramadair inntrigidh agus am facal "verbose" a 'maidseadh nan loidhnichean eadar sin agus fi a ' ruith.
Tha an sgriobt gu h-àrd follaiseach. Dè a thachras mura h-eil thu a 'toirt paramadair ionraidh idir? Is e am freagairt a gheibh thu mearachd a rèir sreathan gnìomhaiche ris nach robh dùil.
Is e am prìomh fhacal eile, mura toir thu seachad am facal "verbose", chan eil dad a 'tachairt idir. Gu h-iongantach mura h-eil thu a 'toirt seachad am facal, bidh an sgriobt a' tilleadh liosta thiotalan.
Cleachd nano a-rithist gus am faidhle rssget.sh a dheasachadh agus an còd atharrachadh mar a leanas:
#! / bin / bash
ma tha [$ 1 = "verbose"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
Sàbhail am faidhle agus ruith e le bhith a 'sgrìobhadh na leanas:
sh rssget.sh verbose
Bidh liosta de thiotalan, tuairisgeulan agus ceanglaichean a 'nochdadh. A-nis ruith e a-rithist mar a leanas:
sh rssget.sh tiotalan
An turas seo cha nochd liosta de na tiotalan.
Tha an earrann a bharrachd den sgriobt air loidhne 4 agus a 'toirt a-steach an aithris eile . Gu h-àbhaisteach, tha an sgriobt a-nis ag ràdh ma tha a 'chiad pharamadair an fhacal "verbose" a' faighinn an tuairisgeul, na ceanglaichean agus na tiotalan airson an RSS feed ach ma tha a 'chiad pharameter aon rud eile dìreach faigh liosta de na tiotalan.
Tha an sgriobt air a dhol air adhart beagan ach tha e fhathast mì-thoilichte. Mura fàg thu paramadair, gheibh thu mearachd fhathast. Eadhon ged a bheir thu paramadair, dìreach le bhith ag ràdh nach eil thu ag iarraidh chan eil verbose a 'ciallachadh gu bheil thu ag iarraidh tiotalan a-mhàin. Is dòcha gu bheil thu dìreach air litreachadh ceàrr mar eisimpleir, no 's dòcha gu bheil colomain air a chlò-bhualadh nach eil gu bràth.
Mus feuchaidh sinn ri na cùisean sin fhuasgladh, tha mi airson gun toir thu aon òrdugh dhut a tha a 'dol leis an aithris IF.
Deasaich do sgriobt rssget.sh airson coimhead mar a leanas:
#! / bin / bash
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
Cho-dhùin mi cuidhteas am facal verbose agus chuir e a h-uile càil an àite e. Chan e sin am pàirt chudromach. Tha an sgriopt gu h-àrd a 'toirt a-steach elif a tha na dhòigh ghoirid de bhith ag ràdh ELSE IF.
A-nis, tha an sgriobt ag obair mar a leanas. Ma shiubas tu rssget.sh uile gheibh thu tuairisgeul, ceanglaichean agus tiotalan. Ma tha thu an-dràsta tha thu dìreach a 'ruith tuairisgeul sh rssget.sh gheibh thu tiotalan agus tuairisgeul. Ma bheir thu seachad facal sam bith eile gheibh thu liosta de thiotalan.
Tha seo a 'toirt a-steach dòigh air a bhith a' tighinn suas le liosta de aithrisean co-cheangailte. Is e dòigh eile de ELIF a bhith a 'cleachdadh na tha aithnichte mar aithrisean IF neadachaidh.
Tha na leanas mar eisimpleir a 'sealltainn mar a tha aithrisean IF neadach ag obair:
#! / bin / bash
ma tha [$ 2 = "timcheall air"]
an uairsin
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
eile
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
Thoir fa-near a bhith a 'sgrìobhadh a h-uile càil a tha ann ma tha thu ag iarraidh no a chopaigeadh agus a ghluasad a-steach don fhaidhle rssget.sh agad.
Tha an sgriobt gu h-àrd a 'toirt a-steach 2 parameter a leigeas leat taghadh "about.com" no "lxer.com" mar bhiadh RSS.
Gus ruith e, cuiridh tu na leanas a-steach:
sh rssget.sh air fad mu dheidhinn
no
sh rssget.sh a h-uile lxer
Faodaidh tu a bhith an àite gach nì le tuairisgeulan no tiotalan gus dìreach tuairisgeulan a thoirt seachad no dìreach tiotalan.
Gu h-àbhaisteach, tha an còd gu h-àrd ag ràdh ma tha an dàrna paramadair mu thimcheall air an uairsin, an uairsin coimhead air an dàrna fear ma tha an aon rud bhon sgriobt eile a dh 'fhaodadh an dàrna pàipear-tomhais a bhith ann an uairsin agus an uairsin coimhead air an taobh a-staigh ma thèid aithris a-rithist gus co-dhùnadh am bu chòir tiotalan, tuairisgeulan a shealltainn no a h-uile dad.
Tha an sgriobt sin air a thoirt seachad mar eisimpleir de aithris neadachaidh IF agus tha uiread de rudan ceàrr leis an sgriobt sin gun toireadh e artaigil eile airson a h-uile dad a mhìneachadh. Is e a 'phrìomh chùis nach eil e furasta a chleachdadh.
Smaoinich gu robh thu airson piseach RSS eile a chur ris mar Linux Linux Everyday no Linux Today? Bhiodh an sgriobt gu math mòr agus ma cho-dhùin thu gun robh thu ag iarraidh an aithris taobh a-staigh IF atharrachadh feumaidh tu atharrachadh ann an iomadh àite.
Ged a tha àm agus àite ann airson neadachadh, bu chòir dhaibh a bhith air an cleachdadh gu math. Mar as trice tha dòigh ann airson do chòd ath-ghluasad gus nach fheum thu an IF neadachadh idir. Thig mi chun a 'chuspair seo ann an artaigil san àm ri teachd.
Feuch an-dràsta feuch ris a 'cheist a th' aig daoine a 'dol a-steach do pharamadairean duff a rèiteachadh. Mar eisimpleir anns an sgriobt gu h-àrd ma tha an neach-cleachdaidh a 'dol a-steach rudeigin eile a-mhàin "aboutdotcom" mar an dara paramadair, bidh liosta de artaigilean a' nochdadh bhon RSS feed bho LXER a dh'aindeoin dè an cleachdaiche a th 'ann a-steach no nach eil.
A thuilleadh air an sin mura cuir an neach-cleachdaidh "a h-uile" no "tuairisgeul" a-steach mar a '1mh paraiméadar, is e liosta de na tiotalan a th' ann an-dràsta a dh'fhaodadh a bhith na tha an neach-cleachdaidh an dùil.
Seall air an sgriobt a leanas (no dèan lethbhreac dheth agus cuir a-steach e san fhaidhle rssget.sh agad.
#! / bin / bash
ma tha [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
an uairsin
ma tha [$ 1 = "all"] || [$ 1 = "tuairisgeul"] || [$ 1 = "tiotal"]
an uairsin
ma tha [$ 2 = "timcheall air"]
an uairsin
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
eile
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
Is e a 'chiad rud a tha fa-near a thoirt fa-near gu bheil an sgriobt a-nis a' faighinn cothrom gu math agus faodaidh tu faicinn gu luath mar a tha a-mach à smachd air neadachadh IF faodar aithrisean a thighinn.
Is e an earrann a tha cudromach san sgriobt seo an aithris IF aithris THEN earrann air loidhne 2 agus loidhne 4.
An seasamh airson OR. Mar sin, an loidhne ma tha [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] a ' sgrùdadh a bheil an 2 paramadair co-ionnan ri "aboutdotcom" no "lxer". Mura h-eil e an uair sin, tha an aithris IF crìochnaichte oir chan eil aithris sam bith eile air a 'chuid as motha den IF.
Mar an ceudna air loidhne 4 an loidhne ma tha [$ 1 = "all"] || [$ 1 = "tuairisgeul"] || [$ 1 = "tiotal"] a ' dearbhadh a bheil a' chiad paramadair co-ionnan ri "uile" no "tuairisgeul" no "tiotal".
A-nis ma tha an neach-cleachdaidh a 'ruith rssget.sh caise buntàta cha tèid dad a thoirt air ais ach mus fhaigheadh iad liosta de thiotalan bho LXER.
An taobh mu choinneamh is &&. Tha ionadan & & operatair && airson AND.
Bidh mi a 'dol a dhèanamh air an sgriobt a bhith a' coimhead nas coltaiche ri sgeul-oidhche ach tha e a 'dèanamh an sgrùdadh cudromach gu lèir gus dèanamh cinnteach gu bheil an neach-cleachdaidh air 2 paraimadair a thoirt seachad.
#! / bin / bash
ma tha [$ # -eq 2]
an uairsin
ma tha [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
an uairsin
ma tha [$ 1 = "all"] || [$ 1 = "tuairisgeul"] || [$ 1 = "tiotal"]
an uairsin
ma tha [$ 2 = "timcheall air"]
an uairsin
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
eile
ma tha [$ 1 = "uile"]
an uairsin
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "description"]
an uairsin
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
eile
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi
Is e an aon rud a bharrachd a tha anns an sgriobt seo aithris eile a-muigh IF mar a leanas: ma tha [$ # -eq 2] . Ma leugh thu an artaigil mu pharaimearan cuiridh fios agad gu bheil $ # a 'tilleadh cunntas air an àireamh de pharaimearan cuir a-steach. Tha an -q a 'seasamh airson co-ionannachd. Mar sin, tha aithris IF a 'dearbhadh gu bheil an neach-cleachdaidh a' dol a-steach gu 2 paraimadair agus mura dèanadh iad dìreach a 'falbh às aonais càil. (Gun a bhith gu sònraichte càirdeil).
Tha mi mothachail gu bheil an oideachadh seo a 'faighinn gu math mòr. Chan eil mòran a bharrachd ann airson a bhith a 'còmhdach an t-seachdain seo ach tha mi airson cuideachadh a' sgioblachadh an sgriobt mus cuir sinn crìoch air.
Is e an aon àithne mu dheireadh a dh 'fheumas tu ionnsachadh mu aithrisean co-cheangailte ris an aithris CASE.
#! / bin / bash
ma tha [$ # -eq 2]
an uairsin
cùis $ 2 ann
mu thimcheall)
cùis $ 1 ann
uile)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;;
Tuairisgeul)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;;;
tiotal)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;;
esac
;;;
lxer)
cùis $ 1 ann
uile)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;;;
Tuairisgeul)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;;;
tiotal)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;;
esac
;;;
esac
fi
Tha an aithris cùis na dhòigh nas fheàrr de sgrìobhadh IF ELSE IF ELSE IF ELSE IF.
Mar eisimpleir, an loidsig seo
IF toradh = bananathan
THEN seo
ELSE MA fruit = oranges
THEN seo
ELSE MA measan = fìon-dhearcan
THEN seo
CRÌOCH IF
a bhith air ath-sgrìobhadh mar:
measan cùise ann
bananathan)
dèan seo
;;;
oranges)
dèan seo
;;;
fìon-dhearcan)
dèan seo
;;;
esac
Gu dearbh, is e a 'chiad rud as deidh a' chùis an rud a tha thu a 'dol a choimeas (me measan). An uairsin is e gach nì ro na camagan an rud a tha thu a 'dèanamh coimeas an aghaidh agus ma tha e a' freagairt ris na sreathan roimhe; a 'ruith. Tha aithris cùise air a chrìochnachadh leis an esac cùil (a tha a 'chùis air ais).
Anns an sgriobt rssget.sh tha an aithris cùise a 'toirt cuid den uamhasach uamhasach sin ged nach eil e ga leasachadh gu leòr.
Gus an sgriobt a leasachadh, feumaidh mi thu a thoirt a-steach gu caochladairean.
Seall air a 'chòd a leanas:
#! / bin / bash
lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
display = ""
url = ""
ma tha [$ # -lt 2] || [$ # -gt 2]
an uairsin
echo "cleachdadh: rssget.sh [all | description | title] [aboutdotcom | lxer]";
fàgail;
fi
cùis $ 1 ann
uile)
display = "- d -l -u"
;;;
Tuairisgeul)
display = "- d -u"
;;;
tiotal)
taisbeanaidh = "- u"
;;;
esac
cùis $ 2 ann
mu thimcheall)
url = $ aboutdotcom;
;;;
lxer)
url = $ lxer;
;;;
esac
rsstail $ display $ url;
Tha caochladair air a mhìneachadh le bhith a 'toirt ainm dha agus an uairsin a' sònrachadh luach dha. Anns an eisimpleir gu h-àrd, tha na leanas nan atharrachaidhean eadar-dhealaichte:
lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
display = ""
url = ""
Tha an sgriobt an-dràsta nas làimhseachail le bhith a 'cleachdadh atharraichean. Mar eisimpleir tha gach paramadair air a làimhseachadh fa leth agus mar sin chan eil aithrisean IF neadachaidh ann.
Tha an caochladair taisbeanaidh a-nis air a shuidheachadh a rèir a bheil thu a 'taghadh a h-uile dad, tuairisgeul no tiotal agus tha an caochladair url air a shuidheachadh gu luach an caochlaideach mu thimcheall no luach an caochlaideach lxer a rèir an tagh thu mu thimcheall no lxer.
Feumaidh an t-òrdugh rsstail a-nis dìreach luach an taisbeanaidh agus an url a chleachdadh gus a ruith ceart.
Ged a tha caochlaidhean air an suidheachadh dìreach le bhith a 'toirt dhaibh ainm, airson an cleachdadh gu feum feumaidh tu comharradh $ a chur air beulaibh. Ann am faclan eile, tha variable = luach a 'suidheachadh caochlaideach ri luach ach tha caochladh $ a' ciallachadh thoir dhomh susbaint an caochlaideach.
Is e seo a leanas an script mu dheireadh airson an oideachadh seo.
#! / 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"
usage = "usage: rssget.sh [all | description | title] [lxer | aboutdotcom | everydaylinuxuser | linuxtoday]"
display = ""
url = ""
ma tha [$ # -lt 2] || [$ # -gt 2]
an uairsin
echo $ cleachdadh;
fàgail;
fi
cùis $ 1 ann
uile)
display = "- d -l -u"
;;;
Tuairisgeul)
display = "- d -u"
;;;
tiotal)
taisbeanaidh = "- u"
;;;
*)
echo $ cleachdadh;
fàgail;
;;;
esac
cùis $ 2 ann
mu thimcheall)
url = $ aboutdotcom;
;;;
lxer)
url = $ lxer;
;;;
linuxtoday)
url = $ linuxtoday;
;;;
s an Iar-
url = $ everydaylinuxuser;
;;;
*)
echo $ cleachdadh;
fàgail;
esac
rsstail $ display $ url;
Tha an script a tha a 'toirt a-steach a' toirt a-steach barrachd bidhean RSS agus tha caochladh cleachdadh ann a tha ag innse don neach-cleachdaidh mar a chleachdas iad an sgriobt mura h-eil iad a 'cur a-steach 2 atharrachadh no a tha iad a' toirt a-steach roghainnean mì-cheart airson nan atharraichean.
Geàrr-chunntas
Tha seo air a bhith na artaigil mòr agus is dòcha gun deach e ro fhada ro luath. Anns an ath iùl, bidh mi a 'sealltainn dhut na roghainnean coimeas eadar na h-aithrisean IF agus tha mòran a bharrachd ann airson bruidhinn mu atharrachadh.
Tha barrachd ann cuideachd a ghabhas dèanamh gus an sgriobt gu h-àrd a leasachadh agus thèid seo a chòmhdach ann an treòrachadh san àm ri teachd fhad 'sa bhios sinn a' sgrùdadh lùban, briathran cunbhalach agus riaghailteach.
Thoir sùil air mar a nì thu (Dèan sìos sìos air na roinnean airson liosta de artaigilean fhaicinn) earrann de l inux.about.com gus barrachd thurasan feumail a lorg bho Windows booting agus Ubuntu gus inneal-làimhe a chruthachadh le bhith a 'cleachdadh bhogsaichean GNOME .