Hvernig á að búa til einfaldar skeljaforskriftir í Linux


Að búa til skeljaforskriftir er ein af mikilvægustu færnunum sem Linux notendur ættu að hafa á fingurgóma. Skeljaforskriftir gegna gríðarlegu hlutverki við að gera sjálfvirk endurtekin verkefni sem annars væri leiðinlegt að framkvæma línu fyrir línu.

Í þessari kennslu leggjum við áherslu á nokkrar af helstu skeljaforskriftaaðgerðum sem allir Linux notendur ættu að hafa.

1. Búðu til einfalt skeljaforskrift

Skeljahandrit er skrá sem samanstendur af ASCII texta. Við byrjum á því að búa til einfalt skeljaforskrift og til þess notum við textaritil. Það eru allmargir vim ritstjórar.

Við byrjum á því að búa til einfalt handrit sem sýnir „Halló heimur“ þegar það er keyrt.

$ vim hello.sh

Límdu eftirfarandi efni í skrána og vistaðu.

#!/bin/bash
# Print Hello world message
echo "Hello World!"

Við skulum fara yfir skeljahandritið línu fyrir línu.

  • Fyrsta línan – #!/bin/bash – er þekkt sem shebang hausinn. Þetta er sérstök uppbygging sem gefur til kynna hvaða forrit verður notað til að túlka handritið. Í þessu tilviki mun þetta vera bash skelin sem er auðkennd með /bin/bash. Það eru önnur forskriftarmál eins og Python sem er táknað með #!/usr/bin/python3 og Perl þar sem shebang hausinn er táknaður með #!/usr/bin/perl.
  • Önnur línan er athugasemd. Athugasemd er yfirlýsing sem lýsir því hvað skeljaforskrift gerir og er ekki keyrt þegar smáforritið er keyrt. Á undan athugasemdum er alltaf merkið #.
  • Síðasta línan er skipunin sem prentar „Hello World“ skilaboðin á flugstöðinni.

Næsta skref er að gera handritið keyranlegt með því að úthluta execute leyfi með því að nota chmod skipunina eins og sýnt er.

$ chmod +x  hello.sh

Að lokum skaltu keyra skeljaforskriftina með því að nota aðra hvora skipanirnar:

$ bash hello.sh
OR
$ ./hello.sh

2. Notkun skilyrtar yfirlýsingar til að framkvæma kóða

Eins og önnur forritunarmál eru skilyrtar staðhæfingar notaðar í bash scripting til að taka ákvarðanir, með aðeins smá breytingu á setningafræði. Við ætlum að fjalla um ef, ef-annað og elif skilyrt yfirlýsingar.

Hægt er að nota if setninguna til að prófa stakar eða margar aðstæður. Við byrjum á grundvallarnotkun ef yfirlýsingarinnar til að prófa eitt ástand. If setningin er skilgreind af if ... fi kubbunum.

if command
then
  statement
fi

Við skulum skoða skeljahandritið hér að neðan.

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

Ofangreind skeljaforskrift biður notandann um að gefa upp stig sem síðan er geymt í breytunni x. Ef stigið samsvarar 70, skilar skriftin úttakinu „Góð starf!“ Samanburðarvirki == er notaður til að prófa hvort stigið sem slegið er inn, sem er geymt í breytunni x, sé jafngilt í 100.

Aðrir samanburðaraðilar sem þú getur notað eru:

  • -eq – Jafnt
  • -ne – Ekki jafn
  • -lt – Minna en
  • -le – Minna en eða jafnt og
  • -lt – Minna en
  • -ge – Stærra en eða jafnt og

Til dæmis prentar ef-yfirlýsingareiturinn hér að neðan út „Work Harder“ ef inntakseinkunnin er eitthvað lægra en 50.

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi

Fyrir aðstæður þar sem þú hefur 2 mögulegar niðurstöður: – hvort sem þetta eða hitt – kemur ef-annað staðhæfingin sér vel.

if command
then
  statement1
else
  statement2
fi

Handritið hér að neðan les inntakseinkunnina og athugar hvort það sé meira en eða jafnt og 70.

Ef stigið er meira en eða jafnt og 70 færðu skilaboðin „Frábært starf, þú stóðst!“. Hins vegar, ef stigið fer undir 70, verður úttakið „Þú mistókst“ prentað.

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi

Í atburðarás þar sem það eru mörg skilyrði og mismunandi niðurstöður, er if-elif-else setningin notuð. Þessi yfirlýsing tekur eftirfarandi form.

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

Við erum til dæmis með forskrift fyrir happdrætti sem athugar hvort númerið sem slegið er inn sé annað hvort 90, 60 eða 30.

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi

3. Notkun If-yfirlýsingarinnar með AND Logic

Þú getur notað if setninguna við hlið AND rökfræðinnar til að framkvæma verkefni ef tvö skilyrði eru uppfyllt. && rekstraraðilinn er notaður til að tákna OG rökfræði.

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

5. Notkun If-yfirlýsingarinnar með OR Logic

Þegar OR rökfræðin er notuð, sem er táknuð með || tákni, þarf annað hvort skilyrðanna að vera uppfyllt með handritinu til að gefa þær niðurstöður sem búist er við.

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi

Notaðu Looping Constructs

Bash lykkjur gera notendum kleift að framkvæma röð verkefna þar til ákveðinni niðurstöðu er náð. Þetta kemur sér vel við að framkvæma endurtekin verkefni. Í þessum hluta munum við kíkja á nokkrar lykkjur sem þú munt líka finna á öðrum forritunarmálum.

Þetta er ein auðveldasta lykkjan til að vinna með. Setningafræðin er frekar einföld:

while  <some test>
do
 commands
done

While lykkjan hér að neðan sýnir allar tölurnar frá 1 til 10 þegar þær eru keyrðar.

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

Við skulum ræða while lykkjuna:

Breytuteljarinn er frumstilltur á 1. Og á meðan breytan er minni en eða jöfn 10, mun gildi teljarans hækka þar til skilyrðinu er fullnægt. Line echo $counter prentar allar tölurnar frá 1 til 10.

Eins og while lykkjan er for lykkja notuð til að keyra kóða endurtekið. Þ.e.a.s. endurtaka keyrslu kóða eins oft og mögulegt er skilgreind af notanda.

Setningafræðin er:

for var in 1 2 3 4 5 N
do
 command1
 command2
done

For lykkjan hér að neðan endurtekur sig í gegnum 1 til hægri í 10 og vinnur úr gildi þeirra á skjánum.

Betri leið til að ná þessu er að skilgreina svið með því að nota tvöfalda krullu svigana { } eins og sýnt er í stað þess að slá inn allar tölurnar.

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done

Bash staðsetningarfæribreytur

Stöðubreyta er sérstök breyta sem vísað er til í forskriftinni þegar gildi eru send á skelina en ekki er hægt að úthluta þeim. Staðsetningarbreytur keyra frá $0 $1 $2 $3 …… til $9. Fyrir utan $9 gildið verða færibreyturnar að vera innan um krullaða sviga, t.d. $ {10}, $ {11} … og svo framvegis.

Þegar handritið er keyrt tekur fyrsta staðsetningarfæribreytan sem er $0 nafn skeljaforskriftarinnar. $1 færibreytan tekur fyrstu breytuna sem er send á flugstöðina, $2 tekur aðra, $3 þá þriðju og svo framvegis.

Við skulum búa til handrit test.sh eins og sýnt er.

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

Næst skaltu keyra handritið og gefa upp fyrsta og annað nafnið sem rök:

# bash test.sh James Kiarie

Af úttakinu getum við séð að fyrsta breytan sem er prentuð er nafn skeljaforskriftarinnar, í þessu tilviki, test.sh. Síðan eru nöfnin prentuð út sem samsvara staðsetningarbreytum sem skilgreindar eru í skeljaskriftinni.

Staðsetningarfæribreytur eru gagnlegar að því leyti að þær hjálpa þér að sérsníða gögnin sem verið er að slá inn í stað þess að úthluta sérstaklega gildi til breytu.

Útgöngukóðar fyrir Shell Command

Við skulum byrja á því að svara einfaldri spurningu, Hvað er útgöngukóði?

Sérhver skipun sem keyrð er á skelinni af notanda eða skeljaskriftu hefur lokastöðu. Útgöngustaða er heil tala.

Hættastaða 0 gefur til kynna að skipunin hafi verið framkvæmd með góðum árangri án nokkurra villna. Allt á milli 1 og 255 sýnir að skipunin mistókst eða tókst ekki.

Til að finna útgangsstöðu skipunar, notaðu $? Shell breytuna.

Lokastaða upp á 1 bendir á almenna villu eða einhverjar óleyfilegar villur eins og að breyta skrám án sudo heimilda.

Útgöngustaða upp á 2 bendir til rangrar notkunar á skipun eða innbyggðri skelbreytu.

Útgöngustaðan 127 bendir á ólöglega skipun sem venjulega gefur villuna „skipun fannst ekki“.

Vinnsla úttaks skelskipana innan handrits

Í bash scripting geturðu geymt úttak skipunar í breytu til notkunar í framtíðinni. Þetta er einnig nefnt skelskipunarskipti og hægt er að ná þessu á eftirfarandi hátt.

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

Til dæmis geturðu geymt dagsetningarskipunina í breytu sem heitir í dag og hringt í skeljaforskriftina til að sýna núverandi dagsetningu.

#!/bin/bash

today=$(date)

echo “Today is $today”

Tökum annað dæmi. Segjum sem svo að þú viljir finna gilda innskráningarnotendur á Linux kerfinu þínu. Hvernig myndir þú fara að því? Í fyrsta lagi er listinn yfir alla notendur (bæði kerfis-, ferli- og innskráningarnotendur) geymdur í /etc/passwd skránni.

Til að skoða skrána þarftu að nota grep skipunina til að leita að notendum með /bin/bash eigindinni og nota cut -c 1-10 skipunina eins og sýnt er til að sýna fyrstu 10 stafi nafnanna.

Við höfum geymt cat skipunina í login_users breytunni.

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users

Þetta lýkur kennslunni okkar um að búa til einfaldar skeljaforskriftir. Við vonum að þér hafi fundist þetta dýrmætt.