پېل کونکي لارښود د بش لپاره - شرایط او متغیرات

پېژندنه

د "Beginners Guide Guide to BASH" دریمه برخه ته ښه راغلاست. که تاسو پخوانی دوه مقاله لرئ نو بیا به تاسو وغواړئ پوه شئ چې دا الرښود څه ډول د BASH اسالمي لارښوونو لپاره توپیر کوي.

دا لارښود د بشپړې نوښت لخوا د BASH لپاره لیکل کیږي او داسې چې یو لوستونکی تاسو زده کړه لکه څنګه چې زه زده کوم. کله چې زه BASH ته نویه یم نو زه د سافټویر پرمختیا د پس منظر څخه راځم، که څه هم چې لیکل شوي ټول توکي د وینډوز پلیټ فارم لپاره دي.

تاسو کولی شئ د لیدلو لپاره لومړی دوه الرښود وګورئ:

که تاسو د بش سکرپینګ ته نوي یاست نو زه وړاندیز کوم چې د دې سره دوام ومومئ لومړی لارښود.

په دې الرښود کې زه به په ډاګه کړم چې د کاروونکي بیاناتو کارولو لپاره د کاروونکو ازموینې لپاره او څنګه د سکریپ فعالیتونو کنټرول کولو لپاره کارول کیږي.

د ریکارډ لګول

د دې الرښود تعقیب لپاره تاسو باید د کمانډ لین اپریشن نصب کړئ چې دسټسټیل په نوم یادیږي کوم چې د آر ایس ایس فیډونو د لوستلو لپاره کارول کیږي.

که تاسو د Debian / Ubuntu / Mint کارول په اساس د ویشلو ډول ډول ډولئ :

د لګولو ریکارډ ترلاسه کړئ

د Fedora / CentOS لپاره نور لاندي ټکي ولیکئ:

د اوسمهال لګول

د OpenSUSE لپاره لاندې ډولونه ولیکئ:

د زېرمو لګولو زنګ

د IF بیان

یو ټرمینال پرانیزئ او د rssget.sh په نوم یو فایل جوړ کړئ چې لاندې ټایپ کړئ:

sudo nano rssget.sh

د نانو مدیر مدیر لاندې متن درج کړئ:

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

د فایل لخوا CTRL او O فشارول او بیا د CTRL او X فشارول پریښودل د فایل څخه خوندي کړئ.

لاندی ټیکپ لاندی لپ ټاپ چل کړئ:

ش

سکریپټ به د سرلیکونو لیست بېرته د linux.about.com RSS feed څخه راستانه کړي.

دا یو ډیری ګټور لاری نه دی ځکه چې دا سرلیکونه د یو آر ایس ایس فیډ څخه ترلاسه کوي مګر دا د لینکس.about.com آر ایس ایس فیډ ته د لیږد ساتلو لپاره خوندي کوي.

په نانو کې د Rssget.sh سکریپټ پرانیزم بیا بیا او د دوتنې تڼۍ په لاندې ډول وګورئ:

#! / bin / bash

که [$ 1 = "فعل"]
بیا
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml؛
ف

لطفا بیا وروسته لاندې ټیکپ کړئ:

شاکس

دا ځل آر ایس ایس فیډ بیرته د عنوان، لینک او تشریح سره راځي.

راځئ چې سکرېپټ د یو څه تفصیل په اړه تحلیل کړئ:

#! / بن / بش په هر متن کې موږ وليکئ. بله لیکه اساسا د لومړني انټرنیټ پیر پیر ته ګوري چې د کارن لخوا چمتو شوی او د "فعالو" لفظ سره پرتله کوي. که د انټرنیټ پیرټر او د "فعالو" کلمه د بیا او یا هم د ځغاستې تر مینځ لیکې سره سمون ولري.

پورتني لاریون په ښکاره ډول غلطیږي. که څه هم تاسو څه ډول پیښ شي که تاسو د انټرنیټ پیرامیټر نه وړاندې کوئ؟ ځواب تاسو د غیر متوقع کاروونکي لینونو په اوږدو کې یو خنډ دی.

بله لوی غلطی دا ده چې که تاسو "فعل" کلمه نده وړاندې کړې نو بیا هیڅ شی نه کیږي. که چیرې تاسو د فعالو کلمې نه وړاندې کوئ نو لینک به د سرلیکونو لیست بیرته راستانه کړي.

د rssget.sh دوتنې سمولو لپاره نانو بیا کار واخلئ او لاندې کود کوډ په لاندې ډول تعدیل کړئ:

#! / bin / bash

که [$ 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؛
ف

د دوتنې ژغورل او د لاندې ټکو په واسطه یې چل کړئ:

شاکس

د سرلیکونو، توضیحاتو او لینکونو لیست به وي. اوس دا لاندې په لاندې ډول چلوي:

سرلیکونه

دا ځل یوازې د سرلیکونو لیست لیدل کیږي.

د سکریپ اضافی برخه په 4 لیکه کې ده او نور بیان بیانوي. په اصل کې سکرېپټ اوس وايي چې که لومړی پیرامیټر "verbose" کلمه وي د آر ایس ایس فیډ لپاره توضیحات، اړیکې او سرلیکونه ترلاسه کوي مګر که لومړی پیرامیټر یوازې د سرلیکونو لیست ترلاسه کړي که.

سکرېپټ لږ ښه شوی مګر لاهم خراب شوی دی. که تاسو یو پیرامیټټر ته ورننوځي نو تاسو به لا هم یوه تېروتنه ترلاسه کړئ. حتی که تاسو یو پیرامیټر چمتو کړئ، یوازې د ویلو په واسطه تاسو verbose نه غواړئ دا معنی نلري چې تاسو سرلیکونه غواړئ. ښایي تاسو د مثال په توګه د فعل ناسم غلطی کړی یا کیدای شي تاسو د کبوتر ډولونه ولرئ کوم چې بې معنی وي.

مخکې له دې چې موږ هڅه وکړو او دا مسلې روښانه کړو زه غواړم تاسو ته یو بل نور کمانډ وښایه چې د IF بیان سره لیږدول کیږي.

په لاندې ډول وګورئ د خپل Rssget.sh سکرېپټ کې بدلون ورکړئ:

#! / bin / bash

که [$ 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؛
ف

ما پریکړه وکړه چې د شفاهي کلمې څخه خوند واخلم او له ټولو سره یې بدل کړم. دا مهمه برخه نه ده. لاندنی لینک د ایلف معرفي کوي کوم چې د ELSE IF خورا لنډ لاره ده.

اوس لاندی لاندی کار کوی. که تاسو د Rssget.sh اداره کوئ نو بیا تاسو توضیحات، اړیکې او عنوانونه ترلاسه کوئ. که چیرې تاسو یواځې تاسو د rssget.sh توضیحاتو پرمخ وړئ تاسو به یوازې سرلیکونه او تشریحات ترلاسه کړئ. که تاسو کوم بل کلمه وړاندې کوئ نو تاسو به د سرلیکونو لیست ترلاسه کړئ.

دا د شرایطو بیانونو د لیست سره سم د چټکې راټیټولو لاره تعارف کوي. د ELIF د کارولو بدیل لاره د دې لپاره کارول دي چې د نیس شوي IF بیاناتو په نوم پیژندل کیږي.

لاندینۍ بیلګه ده چې ښیې د نینځل شویو ماینونو بیانات څرنګه کار کوي:

#! / bin / bash

که [$ 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؛
ف
نور
که [$ 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؛
ف
ف

د ټولو هغو ټایپولو لپاره وړیا احساس وکړئ که چیرې تاسو خوښ یا یې کاپي او په خپل rssget.sh دوتنه کې یې کاپي کړئ.

پورته پورتنۍ لیکنه دویم پیرامیټره معرفي کوي چې تاسو ته د "about.com" یا "lxer.com" یو آر ایس ایس فیډ غوره کړئ.

د هغې د چلولو لپاره تاسو لاندې ډولونه ولیکئ:

د alldotcom ټول معلومات

یا

ټول لیزر

تاسو کولی شئ د ټولو توضیحاتو یا سرلیکونو ځای ونیسئ ترڅو یوازې توضیحات یا یوازې سرلیکونه چمتو کړئ.

په اصل کې د پورتني کوډ وايي چې که دویم پیرامیټریت د aboutdotcom دی نو دویمه برخه وګورئ که بیان د پخوانۍ لپاتیک څخه ورته وي که دوهم پیرامیټر lxer وي نو بیا داخلي وګورئ که بیان بیا پریکړه وکړي چې ایا د سرلیک ښودنه وکړي، توضیحات یا هرڅه.

دا رسم الخط په خالصه توګه چمتو شوي د Nested IF بیاناتو مثال دی او داسې نور شیان شتون لري چې د دې لیکپورت سره به دا یو بل مضمون ولیکي چې د دوی ټولو ته تشریح کړي. اصلي مسله دا ده چې دا د توکیو وړ نه دی.

تصور وکړئ چې تاسو غواړئ د بل آر ایس ایس ډوډۍ اضافه کړئ لکه ورځني لینوکس کارن یا لینوکس نن ورځ؟ سکریپټ به لوی وي او که تاسو پریکړه وکړه چې تاسو غواړئ چې د داخلي IF بیان بدل کړئ نو تاسو باید په ډیرو ځایونو کې بدل کړئ.

په داسې حال کې چې د نیس شوي IF لپاره وخت او ځای شتون لري دوی باید په روښانه ډول کارول شي. په عمومي ډول ستاسو د کوډ ردولو لپاره یوه لار ده چې تاسو په ټولو کې ناستې ته اړتیا نلري. زه به په راتلونکي مضمون کې پدې موضوع کې راشي.

راځئ اوس د ډف پیرامیټونو ته د ننوتو خلکو مسله حل کړئ. د مثال په توګه په لینک کې که چیرې کارن د دویمې پیرېټرې په څیر یو بل ته ننوځي نو بیا د مضمونونو لیست د LXER څخه د آر ایس ایس فیډ نه راځي پرته له دې چې ایا کارن کاروونکي لیکي یا نه.

سربېره پردې که چیرې کارن د لومړي ټولګیتیر په توګه "ټول" یا "تشریح" ورننوځي نو بیا سرفهرست د سرلیکونو لیست دی کوم چې کیدای شي د کاروونکي په اړه وي یا نه.

لاندې لپټ وګورئ (یا دا د خپل rssget.sh دوتنې کې کاپي او کاپي کړئ.

#! / bin / bash

که [$ 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؛
ف
نور
که [$ 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؛
ف
ف
ف
ف

د یادولو لپاره لومړی شی دا ده چې سکریپټره اوس خورا لویږي او تاسو ژر تر ژره کولی شئ چې د کنترول شویو نیسټرونو څخه د کنترول څرنګوالي څنګه کیدای شي.

هغه څه چې په دې سکریپټ کې مهم دي د IF بیان دی || بیان پدې ربع کې او 4 برخه کې.

|| د یا لپاره. نو دا کرښه که [$ 2 = "aboutdotcom"] || || [$ 2 = "lxer"] وګوري چې دویم پیرامیټریټ "aboutdotcom" یا "lxer" سره برابر دی که نه. که دا نه وي نو د IF اعالمیه بشپړه شوې ځکه چې د بهرنی IF لپاره هیڅ بل بیان شتون نلري .

په ورته ډول په لیک کې 4 که چیرې [$ 1 = "ټول"] || [$ 1 = "تشریح"] || [$ 1 = "عنوان"] وګوري چې آیا لمړۍ پیرامیټری د "ټول" یا "تشریح" یا "عنوان" سره برابر وي.

اوس که چیرته کاروونکي د rssget.sh آلو پنیس ته ځي نو هیڅکله بیرته نه راځي مګر پداسې حال کې چې دوی به د LXER څخه د سرلیکونو لیست ترالسه کړي.

د || دی او & آپریټر د AND لپاره ولاړ دی.

زه غواړم چې سکریپټ نور هم د یوې خوابې په څیر وګورم، مګر دا ډاډ ترلاسه کولو لپاره مهم کتلی کوي چې کاروونکي یې 2 پیرامیټونه چمتو کړي.

#! / bin / bash

که [$ # -کم 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؛
ف
نور
که [$ 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؛
ف
ف
ف
ف
ف

یوازې هغه څه چې په دې سکریپټر کې اضافه وي بل یې د IF بیان بلل کیږي. که چیرې [$ # -qq 2] . که تاسو د انټرنټ پیرټینټونو په اړه مقالې ولیکئ نو تاسو به پوه شئ چې $ # د انټرنټ پیرامیټونو شمیره بیرته راګرځوي. داچې د مساوي مسایلو لپاره وي. له دې امله د IF اعالمیه ګوري چې کاروونکي دوه پیرامیټونه ثبت کړي او که دوی دا کار نه کوي پرته له کوم کار څخه بهر. (په ځانګړې توګه دوستانه نه).

زه پوهیږم چې دا ټیکنالوژي خورا لویږي. دلته د دې اونۍ پوښلو لپاره ډیر څه نه شته مګر زه غواړم چې د پای ته رسیدو دمخه د سکریپټ په اړه خبرتیا کې مرسته وکړم.

یو وروستي قومانده چې تاسو اړتیا لرئ د شرطي بیانونو په اړه زده کړه د کیس بیان دی.

#! / bin / bash


که [$ # -کم 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
ف

د قضیې بیان د لیکلو یوه ښه لاره ده IF ELSE IF ELSE IF ELSE IF.

د مثال په توګه دا منطق

زه میوه = کنه
وروسته دا
ELSE د FF = میوه
وروسته دا
ELSE د انګورو انګور
وروسته دا
پای پایه

کولی شي د دې په څیر بیا لیکل شي:

د قضیې میوه
کیانا)
دا وکړه
؛
نارنجونه)
دا وکړه
؛
انګور)
دا وکړه
؛
esac

په اصل کې د قضیې څخه وروسته لومړی شی توکي هغه شی دی چې تاسو یې پرتله کوئ (یعنی میوه). بیا هر شی د بریکونو څخه مخکې هغه شی دی چې تاسو یې خلاف مقایسه یاست او که دا د لین لیکونو سره سمون خوري؛ به ودرېږي. د قضیې بیان د ریورسی اساسیک سره فسخه شوی (کوم چې د شاګرد حالت دی).

په Rssget.sh سکرپٹ کې د قضیې بیان یو شمیر ځورونکي سیسټمونه لیرې کوي که څه هم چې پدې حقیقت کې دا په کافی اندازه وده نه کوي.

د ریښتیا د سکرټریټ ښه کولو لپاره زه اړتیا لرم چې تاسو متغیراتو ته معرفي کړم.

لاندې کوډ وګورئ:

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
ښودل = ""
url = ""

که [$ # -lt 2] || [$ # -gt 2]
بیا
د "کارولو" په اړه خبرې اترې وکړئ: rssget.sh [ټول | توضیحات | عنوان] [aboutdotcom | lxer] "؛
وتون؛
ف

په $ 1 حالت کې
ټول)
display = "- d -l -u"
؛
تشریح)
display = "- d -u"
؛
عنوان)
ښودل = "- تاسو"
؛
esac

د $ 2 په صورت کې
aboutdotcom)
url = $ aboutdotcom؛
؛
lxer)
url = $ lxer؛
؛
esac
rsstail $ display $ url؛

یو متغیر تعریف شوی دی چې دا یو نوم ورکوي او بیا یې ارزښت ټاکي. په پورته بېلګه کې لاندې توپیرونه شتون لري:

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
ښودل = ""
url = ""

سکرېپټ په چټکۍ سره د مدیریت کارولو له لارې د مدیریت وړ دی. د بیلګې په توګه هر پیراتر په جلا توګه اداره کیږي او په دې توګه د Nested IF بیانات شتون نلري.

اوس د بدلون متغیر دی چې آیا تاسو ټول ټولټاکنې، توضیحات یا عنوان انتخاب کړئ او د url متغیر د ddotcom متغیر ارزښت یا د lxer متغیر ارزښت ته په پام سره د دې په اساس چې آیا تاسو aboutdotcom یا lxer انتخاب کړی وي.

د ریکارډ کمانډ اوس یوازې د ښودلو لپاره د نمونې او url ارزښت کاروي.

پداسې حال کې چې متغیر یوازې د دوی نوم ورکول کیږي، په حقیقت کې دوی دوی ته کاروي، تاسو باید د دوی په وړاندې یو $ نښه ولرئ. په بل عبارت متغیر = ارزښت د ارزښت سره متغیر ټاکي پداسې حال کې چې $ متغیر معنی د متغیر محتويات راکوي.

لاندې د دې لوست لپاره وروستنۍ لینک دی.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
aboutdotcom = "z.about.com/6/o/m/linux_p2.xml"
everydaylinuxuser = "http://feeds.feedburner.com/everydaylinuxuxuser/WLlg"
لینکس ټایډ = "http://feedproxy.google.com/linuxtoday/linux"
کارول = "کارول: rssget.sh [ټول | توضیحات | عنوان] [lxer | aboutdotcom | everydaylinuxer | لینکسکسسیر | لینکستوډ]]"
ښودل = ""
url = ""

که [$ # -lt 2] || [$ # -gt 2]
بیا
$ ګټه وټاکئ
وتون؛
ف

په $ 1 حالت کې
ټول)
display = "- d -l -u"
؛
تشریح)
display = "- d -u"
؛
عنوان)
ښودل = "- تاسو"
؛
*)
$ ګټه وټاکئ
وتون؛
؛
esac

د $ 2 په صورت کې
aboutdotcom)
url = $ aboutdotcom؛
؛
lxer)
url = $ lxer؛
؛
لینکستوډی)
url = $ لینوکستوډ؛
؛
هره ورځ لینکسسسر)
url = $ هره ورځ لینکسسسر؛
؛
*)
$ ګټه وټاکئ
وتون؛
esac

rsstail $ display $ url؛

پورته پورتنۍ لیکل د آر ایس ایس فیډز معرفي کوي او د کارولو متغیر شتون لري کوم چې کاروونکي د لیبل کارولو په اړه څه وايي که دوی یا دوه متغیرات ورننوځي یا دوی د متغیرونو لپاره ناسم اختیارونه داخل کړي.

لنډیز

دا یوه نسخه مضمون دی او کیدی شي ډیر زر ډیر ژر لاړ شي. په راتلونکې لارښود کې زه به تاسو ته د IF د بیاناتو ټول پرتله کول وښایئ او د متغیرونو په اړه د خبرو کولو لپاره لاهم نور هم شتون لري.

داسې نور هم شتون لري چې پورته پورته سکریټر ته وده ورکړي او دا به په راتلونکو لارښوونو کې پوښښ شي لکه څنګه چې موږ د غوږونو، ګوتو او منظمو څرګندونو پلټنه کوو.

د لینکس بکسونو په کارولو سره د مجازی ماشین جوړولو لپاره د دوه ګونی بوټو څخه د ګټورو لارښوونو موندلو لپاره د لینکس (د مضمونونو لست کې د کتلو کتګورۍ کې د کتګورۍ پخوانۍ کتنې) وګورئ وګورئ.