Баштагандарга колдонмо Баш үчүн - шарттардын жана өзгөрмөлөр

тааныштыруу

"Баштагандарга колдонмо Баш" үчүнчү бөлүгүнө Welcome. Эгер мурдагы эки макалалар өтүп кеткен болсо, анда сиз, балким, башка BASH скрипт жол менен ар кандай ушул көрсөтмөлөрдүн баарын кылат эмне бар экенин билиш үчүн келет.

Бул колдонмо Сизде окурман Баш жана ошондой эле толук тушуруу менен жазылып жатат, мен үйрөнө үйрөнүшөт. Мен Баш үчүн тушуруу бир гана катыла Мен программа иштеп чыгуу алкагында келген мен Windows аянтча болуп калды жазган нерселердин көбү да.

Сен барып, алгачкы эки жол көрө аласыз:

Сиз BASH Scripting үчүн жаңы болуп, анда мен бул адам менен мурда биринчи эки жол окуп сунуштайбыз.

Бул колдонмодо Мен тестирлөө киргизүү үчүн шарттуу сөздөрдү колдонуу жана скрипт милдеттерин кантип башкара кантип чагылдыруу керек болот.

орнотуу rsstail

Бул жол жолун жолдоо үчүн окуп үчүн колдонулат rsstail деген буйрук сап өтүнмө орнотуу керек RSS азыктандырат .

Эгер сиз колдонуп жаткан болсо Debian / Ubuntu / Зээрканасы негизинде бөлүштүрүү түрүн төмөнкүдөй:

Sudo ап-ала rsstail орнотуу

Анткени Fedora / CentOS ж.б. төмөнкү терүү:

чизбургер rsstail орнотуу

Анткени openSUSE түрү төмөнкүлөр:

rsstail орнотуу zypper

IF билдирүүсү

бир терминал ачуу жана төмөнкү терүү аркылуу rssget.sh аталган билэни түзүү:

Sudo нано rssget.sh

нано редактору ичинде төмөнкү текстти:

#! / бин / Баш
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;

Ctrl жана X. басуу менен Ctrl жана O жана андан чыгуу басуу менен сактап

Келгиле, терүү аркылуу скриптер:

Sh rssget.sh

скрипт linux.about.com RSS түрмөгүнөн наамдарды тизмесин кайтып келет.

Бул бир эле RSS түрмөгүнөн наамдарын табат, анткени өтө эле пайдалуу жазуусу эмес, бирок ал Linux.about.com RSS түрмөккө жолун эстеп да куткара алат.

дагы бир жолу нано-жылы rssget.sh скрипт Эсеп ачуу жана төмөнкүдөй карап түзөтүп:

#! / бин / Баш

Эгерде [$ 1 = "дайын"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
Fi

скриптер төмөнкүдөй жазуу менен дагы бир жолу:

Sh rssget.sh дайын

Бул жолу RSS канал кайра аталышы, шилтемени жана сүрөттөө менен келет.

кылдаттык менен бир аздан кийин скрипттер талдап көрөлү:

#! / Бин / Баш биз жазып, ар бир ариби менен кездешет. кийинки сапта негизинен пайдалануучу тарабынан берилген биринчи киргизүү параметр карап сөзү "дайын" менен салыштырат. Киргизүү параметри жана сөз "дайын" туура болсо, анда жана Fi ортосунда линиялар качып жатышат.

Жогоруда жазуусу, албетте, туура эмес болуп жатат. Эгер бардык киргизүү параметрин камсыз жок болсо, эмне болот? жооп Эгер күтүлбөгөн операторунун далилдери менен бирге ката болуп саналат.

башка негизги кемчилик болсо, Кудайдын сөзүн "дайын", андан кийин эч нерсе болгон эмес деп эсептелет. Эгер сиз сөздү камсыз кылбаган Түпкүлүгүндө болсо, дайын-жазуусу наамдар тизмесин кайтып келет.

rssget.sh билэни уларытар кайрадан нано колдонуу жана кодексине өзгөртүүлөрдү жана толуктоолорду киргизүү төмөнкүдөй:

#! / бин / Баш

Эгерде [$ 1 = "дайын"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi

сактап жана төмөнкүдөй жазуу менен аны Нускасы:

Sh rssget.sh дайын

Баш аты А-Я, сүрөттөлүшүнүн жана байланыш тизмеси пайда болот. Азыр мындай деп дагы бир жолу Нускасы:

Sh rssget.sh Баш аты А-Я

наамдарды бир тизме Бул жолу пайда болот.

Тексттин кошумча бөлүгү 4-саптагы жана башка отчетту колдонууга киргизет. Негизинен скрипт азыр биринчи параметр сөзү болсо "дайын" сүрөттөлүшү, шилтемелерди жана RSS тоют үчүн документтерин алып, бирок биринчи параметр башка бир нерсе болсо эле наамдар тизмесин дейт.

скрипт бир аз жакшырды, бирок дагы эле өксүк жери бар. Эгер параметр кире албай келсе, дагы ката алышат. Силер болсо дайын келген жок деп, параметр менен камсыз кыла албасам да, сиз гана наамдар келет дегенди билдирбейт. Сиз жөн гана мисалы дайын туура эмес жазылган, же сен, албетте, маанисиз болуп көгүчкөн терилген мүмкүн болушу мүмкүн.

биз аракет жана бул маселелер менен тазалап чейин мен эгер арыз менен барат дагы бир буйругуна көрсөткүм келет.

төмөнкүдөй карап үчүн rssget.sh скрипт түзөтүү:

#! / бин / Баш

Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi

Мен дайын-сөз кутулууну көздөгөн жана анын ордуна. Бул маанилүү бөлүгү болуп саналат. Скрипт жогоруда ЭЧ болсо, мындай кыска жолу Elif киргизет.

Азыр жазуусу төмөнкүдөй болуп иштейт. Баарын анда Sh rssget.sh чуркап келсе, аныктамалар, шилтемелерди жана наамдарды алууга. Анын ордуна жөн гана музыка rssget.sh баяндамасы чуркап келсе, жөн гана наамдар жана сүрөттөөлөрдү алат. Эгер башка бир сөз менен камсыз болсо, наамдар тизмесин алат.

Бул тез эле шарттуу арыздардын тизмеси менен келе турган жол менен тааныштырат. Elif иш боюнча кошумча жолу отчеттун IF камтылган деп аталган пайдалануу болуп саналат.

кийинки билдирүү иштесе уялашты кантип көрсөткөн бир мисал:

#! / бин / Баш

Эгер [$ 2 = "aboutdotcom"]
ошондо
Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
дагы
Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
Fi

терип, ар болсо жаккан же көчүрүп, rssget.sh делосуна аны тегерекчелерди болот.

Жогоруда жазуусу Сиз "About.com" же "lxer.com" деген бир RSS тоют тандап берет 2-параметр киргизет.

аны кийинки жылы сени түрүн жүргүзүү үчүн:

Sh rssget.sh бардык aboutdotcom

же

Sh бардык lxer rssget.sh

Силер, албетте, баяндардын же наамдар менен бардык эле сүрөттөөлөр же жөн гана наамдар менен камсыз кылуу алмаштырууга болот.

Негизинен коду жогорудагы билдирүүсү кайрадан наамдарын, сүрөттөөлөр көрсөткөн жокпу, чечиши керек болсо, экинчи экинчи параметр, эгер параметр анда башка мурдагы арибинде эле бир эмес билдирүү, эгер экинчи карап aboutdotcom жатат lxer анда ички карап, анда мындай дейт: же баары.

Ал жазма, ал алардын баарын түшүндүрүү үчүн дагы алып гана бул ариби менен туура эмес арыз менен көп нерселер бар болсо да камтылган бир мисал катары берилген. башкы маселе бул эскертүү эмес.

Эгер, мисалы, күндөлүк Linux Колдонуучу же Linux Бүгүн башка RSS тоют кошуу келди дейли? скрипт абдан чоң болуп жана сизге бир нече жерлерде аны өзгөртүү керек өзгөртүү ЭГЕР сен ички деп чечтик, анда болмок.

уяланган үчүн убакыт жана орун бар Агезде алар азыраак колдонуу керек. Сен бардык IF камтылган кереги жок, ошондуктан сиздин кодун ишканасы үчүн, адатта, бир жолу бар. Мен келечекте макалада бул тема боюнча келет.

Кел кучагына параметрлерин кирген адамдардын Маселени чечкенге карап чыгалы. Мисалы ариби менен жогоруда колдонуучу "aboutdotcom" 2 параметр катары башка бир нерсе кирсе, анда макалалардын тизмесин колдонуучу болобу карабастан LXER тартып RSS түрмөгүнөн lxer же жок көрүнөт.

Колдонуучу 1 параметр катары "бардык", же "сүрөттөмө" кирген эмес болсо, Андан тышкары демейки же арналган эмне болушу мүмкүн эмес наамдар тизмеси.

Төмөнкү скрипт карап (же көчүрүп, rssget.sh делосуна салып кой.

#! / бин / Баш

Эгер [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ошондо
Эгерде [$ 1 = "бардык"] || [$ 1 = "сүрөттөмө"] || [$ 1 = "аталышы"]
ошондо
Эгер [$ 2 = "aboutdotcom"]
ошондо

Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
дагы
Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
Fi
Fi
Fi

Белгилей кетчү нерсе, биринчи отчет боло алат IF көзөмөлдөн чыгып кантип уялашты жазма азыр кыйла чоң болуп жатат жана тез арада көрө билет.

Бул ариби менен маанилүү бит IF отчету болуп саналат || билдирүүсүндө, 2-сапта линиясы боюнча 4-бөлүм.

|| Же турат. Ошондуктан, сызык [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] 2 параметр "aboutdotcom" же "lxer" барабар экенин текшерет. Анда жок болсо IF билдирүүсүндө сырткы көп болсо, эч кандай башка арызы жок болгондуктан, толугу менен эмес.

Ошо сыяктуу эле, 4-сапка линия боюнча болсо, [$ 1 = "бардык"] || [$ 1 = "сүрөттөмө"] || [1 = "аталышы" $] 1 параметр "бардык" же "сүрөттөөдө" же "аталышы" же барабар экендигин текшерет.

Азыр колдонуучу Sh rssget.sh картошка сыр эч нерсе кетип калса, алар LXER тартып наамдарды тизмесин алган чейин, ал эми кайра кайтарылат.

карама-каршы || && болуп саналат. && оператору жана чечмеленет.

Мен скрипт бир аралаш болуп да кылып жатам, бирок колдонуучу 2 параметрлерин берген камсыз кылуу үчүн бардык маанилүү чекти түзөт.

#! / бин / Баш

болсо, [# $ -eq 2]
ошондо

Эгер [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
ошондо
Эгерде [$ 1 = "бардык"] || [$ 1 = "сүрөттөмө"] || [$ 1 = "аталышы"]
ошондо
Эгер [$ 2 = "aboutdotcom"]
ошондо

Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
дагы
Эгерде [$ 1 = "бардык"]
ошондо
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
Elif [$ 1 = "сүрөттөмө"]
ошондо
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
дагы
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
Fi
Fi
Fi
Fi
Fi

Арызга төмөнкүдөй эгер скрипт дагы сырткы болсо кошумча гана аз: эгерде [$ # -eq 2]. Сиз киргизүү параметрлери жөнүндө макаланы окуп, анда ошол $ # киргизүү параметрлеринин санын санап кайтарат билишет. -eq бирдейлердин чечмеленет. IF билдирүүсүндө Ошондуктан билан 2 параметрлерин кирип текшерет жана алар аны жөн эле эч нерсе кылбай туруп чыгып жок кылды. (Айрыкча, достук эмес,).

Мен бул окуу куралы абдан чоң күч алып жатат деп билем. Бул аптада жабуу үчүн алда канча көп эмес, бирок биз аягына чейин скрипттер жыйнаштырып, жардам бергим келет.

Сиз шарттуу жөнүндө билүүгө муктаж акыркы буйрук CASE отчету болуп саналат.

#! / бин / Баш


болсо, [# $ -eq 2]
ошондо
иши $ 2
aboutdotcom)
иши $ 1
бардык)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;;
сүрөттөлүшү)
rsstail -D -u z.about.com/6/o/m/linux_p2.xml
;;
аталышы)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;;
esac
;;
lxer)
иши $ 1
бардык)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;;
сүрөттөлүшү)
rsstail -D -u http://lxer.com/module/newswire/headlines.rss
;;
аталышы)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;;
esac
;;
esac
Fi

Case ырастоосу ЭЧ Эгерде БАШКА БОЛСО ДАГЫ ЭГЕР жазуу үчүн жагымдуу болуп саналат.

Мисалы, бул логика

жемиш = банан IF
бул
БАШКА БОЛСО жемиш = н
бул
БАШКА БОЛСО жемиш = жүзүм
бул
END IF

деп сынга алат:

иши жемиш менен
бананы)
бул эмне
;;
н)
бул эмне
;;
жүзүм)
бул эмне
;;
esac

Негизинен учурда биринчи пункт сен (мисалы, жемиш) салыштыруу турган нерсе. Андан кийин кашаанын ар бир нерсени силер менен салыштырып, ал сызыктар мурунку дал келсе жаткан нерсе ;; чуркап калат. Бир окуя билдирүүдө арткы esac менен токтотулат (ишти артка турган).

rssget.sh ариби менен иши билдирүү чындыгында эле жетиштүү, аны жакшыртуу эмес, болсо да коркунучтуу уялаган айрымдары жок.

чын эле мен өзгөрмөлөр менен тааныштырабыз керек скрипттер жакшыртуу.

Төмөнкү кодду карап:

#! / бин / Баш

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
дисплей = ""
нускага = ""

Эгер [$ 2 # -lt] || [# $ -gt 2]
ошондо
Эхо "колдонуу: rssget.sh [бардык | сүрөттөлүшү | аталышы] [aboutdotcom | lxer]";
чыгуу;
Fi

иши $ 1
бардык)
дисплей = ", - д -l -u"
;;
сүрөттөлүшү)
дисплей = ", - д -u"
;;
аталышы)
дисплей = ", - у"
;;
esac

иши $ 2
aboutdotcom)
нускага = $ aboutdotcom;
;;
lxer)
нускага = $ lxer;
;;
esac
rsstail $ дисплей $ нускага;

Бир өзгөрмөлүү ага ат берип, анан ага маани берүү менен аныкталат. Жогоруда берилген мисалда төмөнкү өзгөрмөлөр тапшырмалар бар:

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
дисплей = ""
нускага = ""

скрипт өзгөрмө колдонуу менен бир заматта көбүрөөк алуу болуп саналат. Анткени ар бир параметр өзүнчө колдонулганда Мисалы жана отчеттуулук IF жок камтылган жок.

дисплей өзгөрмө азыр сен aboutdotcom же lxer тандап алган жокпу жараша баарын тандап болобу, lxer сыпаттамага же аталышы жана нускага өзгөрмө жана aboutdotcom өзгөрмөнүн же наркынын коюлса өзгөрмөнүн жараша белгиленет.

rsstail буйругу азыр эле туура иштетүү үчүн экрандын жана URL наркын колдоно элек.

аларды пайдаланууга өзгөрүлмөлүүлөр, жөн гана аларга ат менен белгиленет жатышкандыктан, алардын алдында $ белги коюп керек. Башка сөз менен айтканда өзгөрмө = балл өзгөрүлмө каражаттар $, ал эми мага өзгөрмөнүн мазмунун бере мааниге өзгөрмө белгилейт.

Төмөнкүлөр үйрөтмө акыркы жазуусу болот.

#! / бин / Баш

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"
колдонуу = "колдонуу: rssget.sh [бардык | сүрөттөлүшү | аталышы] [lxer | aboutdotcom | everydaylinuxuser | linuxtoday]"
дисплей = ""
нускага = ""

Эгер [$ 2 # -lt] || [# $ -gt 2]
ошондо
Эхо $ колдонуу;
чыгуу;
Fi

иши $ 1
бардык)
дисплей = ", - д -l -u"
;;
сүрөттөлүшү)
дисплей = ", - д -u"
;;
аталышы)
дисплей = ", - у"
;;
*)
Эхо $ колдонуу;
чыгуу;
;;
esac

иши $ 2
aboutdotcom)
нускага = $ aboutdotcom;
;;
lxer)
нускага = $ lxer;
;;
linuxtoday)
нускага = $ linuxtoday;
;;
everydaylinuxuser)
нускага = $ everydaylinuxuser;
;;
*)
Эхо $ колдонуу;
чыгуу;
esac

rsstail $ дисплей $ нускага;

Жогоруда жазуусу алар 2 өзгөрмөлөрдү же өзгөрмөлөр үчүн туура эмес ыкмаларды кирип жок болсо, арибин колдонгон кантип колдонуучу айтылат дагы RSS тоюттар жана колдонуу өзгөрмө бар киргизди.

Жыйынтык

Бул эпикалык макала болду жана да абдан көп өтпөй кетиши мүмкүн. кийинки колдонмодо сиздер отчеттун IF бардык салыштыруу ыкмаларды жана бар өзгөрмөлүү карата жөнүндө көп сүйлөшө турган нерсе да көп болот.

Жана жогоруда арибин жакшыртуу үчүн эмне кылуу керек деген да бар, бул биз илмек, изилдеп, ошондой эле келечекте жол менен капталган болот талаасынын жана үзгүлтүксүз сөздөрдү.

Л inux.about.com дагы пайдалуу жол табууга көрүү кандай (макалалардын тизмесин көрүү үчүн категорияга өтүп ылдый жылдыруу) үчүн текшерип кош Өт Windows жана Ubuntu үчүн GNOME кутучаны колдонуп, жасалма бир машинаны түзүү .