Jagora na farko zuwa BASH - Yanayi da Maɓuɓɓuka

Gabatarwar

Barka da zuwa kashi na uku na "Jagoran Farawa zuwa BASH". Idan ka rasa abubuwan da suka gabata a baya, to tabbas za ka so ka san abin da ya sa wannan jagorar ya bambanta da sauran jagororin BASH scripting.

Wannan jagorar an rubuta shi ne da cikakken lacca ga BASH kuma don haka a matsayin mai karatu ka koyi yadda na koya. Yayinda na zama ba'a ga BASH na zo ne daga tsarin ci gaba na software amma koda yake mafi yawan abubuwan da na rubuta sun kasance ga dandalin Windows.

Zaka iya ganin jagorori biyu na farko ta ziyartar:

Idan kun kasance sabon zuwa rubutun BASH na bayar da shawarar karanta litattafan farko guda biyu kafin ci gaba da wannan.

A cikin wannan jagorar zan nuna yadda za a yi amfani da maganganun kwakwalwa don gwada shigar da mai amfani da kuma sarrafa yadda aikin rubutun yake.

Shigar rsstail

Domin bi wannan jagorar kana buƙatar shigar da aikace-aikacen layin umarni da ake kira rsstail wanda ake amfani da shi don karanta ciyarwar RSS .

Idan kuna amfani da rabon Debian / Ubuntu / Mint da aka rarraba irin waɗannan:

Sudo apt-samun shigar rsstail

Ga Fedora / CentOS da sauransu rubuta irin wadannan:

yum shigar rsstail

Don budeSUSE rubuta irin wannan:

zypper shigar rsstail

Bayanan IF

Bude wani tasiri kuma ƙirƙirar fayil da ake kira rssget.sh ta buga da wadannan:

sudo nano rssget.sh

A cikin editan nano shigar da rubutu mai zuwa:

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

Ajiye fayil ɗin ta latsa CTRL da O sannan ka fita ta latsa CTRL da X.

Gudun rubutun ta yin amfani da wadannan:

sh rssget.sh

Rubutun zai dawo da jerin lakabi daga ladabin yanar gizo na Linux.about.com.

Bai zama rubutun da yafi amfani da shi ba saboda kawai ya dawo da lakabi daga ɗayan feed RSS amma yana ajiye ba tare da tuna hanyar zuwa Linux.about.com feed RSS ba.

Bude rubutun rssget.sh a nano kuma gyara fayil don duba kamar haka:

#! / bin / bash

idan [$ 1 = "verbose"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Gudun rubutun kuma ta buga wadannan:

sh rssget.sh verbose

A wannan lokacin ciyarwar RSS ta dawo tare da take, mahada da bayanin.

Bari mu tantance rubutun a cikin daki-daki:

A #! / Bin / bash ya bayyana a kowane rubutun da muka rubuta. Lissafi na gaba yana kallon saitin farko da mai amfani ya ba shi kuma ya kwatanta shi zuwa kalmar "verbose". Idan rubutun shigarwa da kalma "verbose" ya dace da layin tsakanin layin da kuma fi .

Wannan rubutun na sama ba shi da kuskure. Menene ya faru idan ba ku samar da saitin shigarwa ba? Amsar ita ce ku sami kuskure tare da layin mai aiki mara tsammanin.

Sauran babban kuskure ita ce idan ba ku samar da kalma "verbose" to babu abinda ya faru a kowane lokaci. Tabbas idan ba ku samar da kalmar verbose rubutun zai dawo da sunayen sunayen sarauta ba.

Yi amfani da nano sake don gyara rssget.sh fayil kuma gyara code kamar haka:

#! / bin / bash

idan [$ 1 = "verbose"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi

Ajiye fayil din kuma gudanar da shi ta buga waɗannan abubuwa masu zuwa:

sh rssget.sh verbose

Jerin sunayen lakabi, fassarori da haɗi zasu bayyana. Yanzu sake sake shi kamar haka:

sh rssget.sh sunayen sarauta

Wannan lokaci kawai jerin sunayen sarauta sun bayyana.

Ƙarin ɓangaren rubutun yana a kan layi na 4 kuma ya gabatar da wata sanarwa. Ainihin rubutun yanzu ya ce idan farkon saitin kalma "verbose" ya sami bayanin, alaƙa da lakabi don feed RSS amma idan farkon saitin wani abu ne kawai samun jerin sunayen sarauta.

Rubutun ya bunkasa kaɗan amma har yanzu yana da kuskure. Idan kun kasa shiga saitin za ku sami kuskure. Ko da idan kun samar da wata matsala, kawai ta ce ba ku so verbose ba yana nufin kuna son sunayen sarauta kawai ba. Kila iya zama kawai kalmar kalmar verbose ba daidai ba misali misali ko kuna iya tattake pigeons wanda ba shi da ma'ana.

Kafin mu yi ƙoƙari mu share wadannan batutuwa Ina so in nuna maka wani umarni daya da ke cikin bayanin da IF ya yi.

Shirya rssget.sh rubutun don duba kamar haka:

#! / bin / bash

idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

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

Na yanke shawarar kawar da kalmar verbose kuma na maye gurbin shi duka. Wannan ba shine muhimmin bangare ba. Rubutun da ke sama ya gabatar da elif abin da yake dan gajeren hanyar ce ELSE IF.

Yanzu rubutun yana aiki kamar haka. Idan kun gudu sh rssget.sh duk sa'annan kuna samun bayanan, alamu da lakabi. Idan a maimakon kayi gudu sh rssget.sh bayanin kawai zaka sami lakabi da kwatanta. Idan ka samar da wani kalma zaka samo sunayen sunayen sarauta.

Wannan yana gabatar da hanyoyi na sauri zuwa sama da jerin maganganun kwakwalwa. Hanyar hanyar yin ELIF ita ce yin amfani da abin da aka sani da maganganun IF.

Wadannan su ne misalin da ke nuna yadda bayanin maganganun da aka ƙaddara a cikin aikin:

#! / bin / bash

idan [$ 2 = "aboutdotcom"]
to,
idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
wasu
idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi

Feel kyauta don rubuta duk abin da ke ciki idan kuna so ko kwafa da manna shi cikin fayil rssget.sh ɗinku.

Wannan rubutun na sama ya gabatar da wani saiti na biyu wanda zai baka damar zabi ko "game.com" ko "lxer.com" wani feed RSS.

Don gudanar da shi ka rubuta a cikin wadannan:

sh rssget.sh duk aboutdotcom

ko

sh rssget.sh duk lxer

Hakanan zaka iya maye gurbin duk tare da bayanai ko lakabi don samar da cikakkun bayanai ko lakabi kawai.

Kodayake lambar da ke sama ta ce idan sigin na biyu shine gamedotcom sa'an nan kuma dubi na biyu idan sanarwa wanda yake daya daga cikin rubutun baya idan zabin na biyu ya kasance sxer sa'an nan kuma duba cikin ciki idan ya sake furtawa don nuna ko ya nuna lakabi, fassarori ko komai.

Wannan rubutun ya samo asali ne a matsayin misali na maganganun IF wanda aka samo shi kuma akwai abubuwa da yawa ba daidai ba tare da wannan rubutun zai ɗauki wata kasida don bayyana su duka. Babban batun shine cewa ba za'a iya daidaita ba.

Ka yi tunanin kana so ka ƙara wani nau'i na RSS kamar su Linux User ko Linux A yau? Rubutun zai zama babbar kuma idan kun yanke shawarar cewa kuna so bayanin IF na ciki don canzawa dole ku canza shi a wurare masu yawa.

Yayinda akwai lokaci da wurin da za a yi amfani da shi idan an yi amfani dasu a hankali. Yawancin lokaci akwai hanyar da za a sake gurɓatar lambarka don kada ka buƙatar kwarewar IF a kowane lokaci. Zan zo ga wannan batu a cikin wani labarin na gaba.

Yanzu bari mu dubi gyara batun batun mutane da ke shiga cikin siginan. Alal misali a cikin rubutun da ke sama idan mai amfani ya shiga wani abu banda "aboutdotcom" a matsayin na biyu na bayanan to sai jerin abubuwan sun fito daga feed RSS daga LXER ko da kuwa idan mai amfani ya shiga sautin ko a'a.

Bugu da kari idan mai amfani ba ya shigar da "duk" ko "bayanin" ba a matsayin farkon saitin sai tsoho shi ne jerin sunayen sarauta wanda zai iya ko a'a abin da mai amfani ya nufa.

Dubi rubutun da ke biyowa (ko kwafa da manna shi cikin fayil rssget.sh ɗinku.

#! / bin / bash

idan [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
to,
idan [$ 1 = "duk"] || [$ 1 = "bayanin"] || [$ 1 = "taken"]
to,
idan [$ 2 = "aboutdotcom"]
to,

idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
wasu
idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi

Abu na farko da za a lura shi ne cewa rubutun yanzu yana karuwa sosai kuma za ku iya ganin yadda za a iya samun maganganun IF a cikin sauti.

Ƙarin da yake da muhimmanci a cikin wannan rubutun shine bayanin IF na || sanarwa YA sashi a kan layi 2 da layi 4.

A || tsaye ga OR. Saboda haka layin idan [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"] yana bincikar ko tsarin na biyu yana daidaita da "aboutdotcom" ko "lxer". Idan ba haka ba ne bayanin IF ya cika saboda babu wani bayani game da mafi girma IF.

Hakazalika a line 4 layin idan [$ 1 = "duk"] || [$ 1 = "bayanin"] || [$ 1 = "suna"] yana duba ko dai farkon saitin daidai yake da "duk" ko "bayanin" ko "take".

Yanzu idan mai amfani gudanar sh rssget.sh dankali cuku ba abin da aka mayar alhãli kuwa kafin sun samu jerin sunayen sarauta daga LXER.

Kishiyar || ne &&. Mai amfani da && na tsaye don AND.

Zan yi rubutun ya zama kamar mafarki mai ban tsoro amma yana sa duk mai muhimmanci duba don tabbatar cewa mai amfani ya ba da sigogi 2.

#! / bin / bash

idan [$ # -eq 2]
to,

idan [$ 2 = "aboutdotcom"] || [$ 2 = "lxer"]
to,
idan [$ 1 = "duk"] || [$ 1 = "bayanin"] || [$ 1 = "taken"]
to,
idan [$ 2 = "aboutdotcom"]
to,

idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://z.about.com/6/o/m/linux_p2.xml;
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://z.about.com/6/o/m/linux_p2.xml;

wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
wasu
idan [$ 1 = "duk"]
to,
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
elif [$ 1 = "bayanin"]
to,
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
wasu
rsstail -u http://z.about.com/6/o/m/linux_p2.xml;
fi
fi
fi
fi
fi

Abinda kawai yake da shi a wannan rubutun shine wani bayanan IF wanda ya kasance kamar haka: idan [$ # -eq 2] . Idan kun karanta labarin game da matakan shigarwa za ku san cewa $ # ya dawo da adadi na adadin shigarwa. Hanya tana tsaye ga daidaito. Bayanan IF din yana duba cewa mai amfani ya shiga 2 sigogi kuma idan ba kawai ya fita ba tare da yin wani abu ba. (Ba musamman abokantaka ba).

Na san cewa wannan koyo na samun girma. Babu sauran abubuwa don rufe wannan makon amma ina so in taimakawa wajen daidaita rubutun kafin mu gama.

Umarnin karshe wanda kake buƙatar koya game da maganganun yanayin shine bayanin CASE.

#! / bin / bash


idan [$ # -eq 2]
to,
case $ 2 a
aboutdotcom)
case $ 1 a
duk)
rsstail -d -l -u z.about.com/6/o/m/linux_p2.xml
;
bayanin)
rsstail -d -u z.about.com/6/o/m/linux_p2.xml
;
title)
rsstail -u z.about.com/6/o/m/linux.about.com/6/o/m/linux_p2.xml
;
esac
;
lxer)
case $ 1 a
duk)
rsstail -d -l -u http://lxer.com/module/newswire/headlines.rss
;
bayanin)
rsstail -d -u http://lxer.com/module/newswire/headlines.rss
;
title)
rsstail -u http://lxer.com/module/newswire/headlines.rss
;
esac
;
esac
fi

Bayanin shari'ar shine hanyar da ta fi dacewa ta rubuta IF ELSE IF SON IFE IF.

Alal misali wannan mahimmanci

IF 'ya'yan itace = ayaba
SAN wannan
ELSE IF 'ya'yan itace = almuran
SAN wannan
ELSE IF 'ya'yan itace = inabi
SAN wannan
END IF

za a iya sake rubuta shi kamar:

Sakamako a cikin
ayaba)
yi haka
;
oranges)
yi haka
;
inabi)
yi haka
;
esac

M abu na farko bayan shari'ar ita ce abu da za ku kwatanta (watau 'ya'yan itace). Sa'an nan kuma kowane abu kafin kwakwalwa shine abin da kake kwatanta da kuma idan ya dace da layin da ke gaba; za a gudu. An gama bayani akan kararraki tare da baya baya (wanda shine a baya).

A cikin rssget.sh rubutun bayanin shari'ar ya kawar da wasu daga cikin mummunar ninkin ko da yake ba a inganta shi sosai ba.

Don gaske inganta rubutun da nake buƙatar gabatar da ku ga masu canji.

Dubi wadannan shafuka:

#! / bin / bash

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

idan [$ # -lt 2] || [$ # -gt 2]
to,
Kira "amfani: rssget.sh [duk | description | title] [gamedotcom | lxer]";
fita;
fi

case $ 1 a
duk)
nuni = "- d -l -u"
;
bayanin)
nuni = "- d -u"
;
title)
nuni = "- u"
;
esac

case $ 2 a
aboutdotcom)
url = $ aboutdotcom;
;
lxer)
url = $ lxer;
;
esac
rsstail $ nuna $ url;

An rarraba madadin ta hanyar ba shi suna sannan kuma ya ba da darajar ta. A cikin misalin da ke sama misali wadannan ayyuka ne masu rarraba:

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

Rubutun yana samuwa sosai ta hanyar amfani da masu canji. Alal misali kowane alamar ana sarrafawa ta daban kuma don haka babu maganganun IF wanda aka kafa.

An saita jigon nuni yanzu dangane da ko ka zaɓi duk, bayanin ko take da mahaɗin url an saita zuwa darajar canzawa gamedotcom ko darajan nauyin lxer dangane da koda za ka zabi aboutdotcom ko lxer.

Umurnin rsstail yanzu dole ne ya yi amfani da darajar nuni da url don gudu daidai.

Duk da yake an saita masu amfani da su kawai ta hanyar ba su suna, don amfani da su dole ku sanya alamar $ a gaban su. A wasu kalmomi mai ƙidayar = darajar darajar ta canza zuwa darajar yayin da $ m yana nufin ba ni abinda ke ciki na m.

Wannan shi ne rubutun ƙarshe don wannan koyawa.

#! / bin / bash

lxer = "lxer.com/module/newswire/headlines.rss"
gamedotcom = "z.about.com/6/o/m/linux_p2.xml"
dailylinuxuser = "http://feeds.feedburner.com/everydaylinuxuser/WLlg"
linuxtoday = "http://feedproxy.google.com/linuxtoday/linux"
amfani = "amfani: rssget.sh [duk | bayanin | title] [lxer | aboutdotcom | dailylinuxuser | jumma]"
nuni = ""
url = ""

idan [$ # -lt 2] || [$ # -gt 2]
to,
Kashe $ amfani;
fita;
fi

case $ 1 a
duk)
nuni = "- d -l -u"
;
bayanin)
nuni = "- d -u"
;
title)
nuni = "- u"
;
*)
Kashe $ amfani;
fita;
;
esac

case $ 2 a
aboutdotcom)
url = $ aboutdotcom;
;
lxer)
url = $ lxer;
;
linuxtoday)
url = $ biliyan;
;
dailylinuxuser)
url = $ dailylinuxuser;
;
*)
Kashe $ amfani;
fita;
esac

rsstail $ nuna $ url;

Rubutun da ke sama ya gabatar da ƙarin abubuwan RSS kuma akwai tasiri mai amfani wanda ya gaya wa mai amfani yadda za a yi amfani da rubutun idan sun kasance ba su shiga 2 masu canji ba ko suna shigar da zabin ba daidai ba ga masu canji.

Takaitaccen

Wannan ya zama labarin da ya fi dacewa kuma yana iya wucewa da wuri ba da da ewa ba. A cikin jagora mai zuwa zan nuna maka dukan samfurori masu dacewa don maganganun IF kuma akwai sauran abubuwa da yawa don magana game da gamsuwa ga masu canji.

Har ila yau akwai ƙarin abin da za a iya yi don inganta rubutun da ke sama da haka kuma za a rufe shi a nan gaba kamar yadda muke binciko madaukai, grep da maganganu na yau da kullum.

Bincika yadda za a (gungurawa da kyan gani don duba jerin sassan) na l inux.about.com don neman ƙarin jagororin masu amfani daga dual booting Windows da Ubuntu don kafa na'ura ta atomatik ta amfani da akwatin GNOME .