Kako ustvariti preproste skripte lupine v Linuxu


Ustvarjanje lupinskih skriptov je eno najpomembnejših veščin, ki bi jih morali imeti uporabniki Linuxa na vrhu prstov. Skripti lupine igrajo ogromno vlogo pri avtomatizaciji ponavljajočih se nalog, ki bi sicer bilo dolgočasno izvajanje vrstice za vrstico.

V tej vadnici izpostavljamo nekaj osnovnih skriptnih operacij lupine, ki bi jih moral imeti vsak uporabnik Linuxa.

1. Ustvarite preprost skript lupine

Skript lupine je datoteka, ki vsebuje besedilo ASCII. Začeli bomo z ustvarjanjem preprostega skripta lupine in za to uporabili urejevalnik besedil. Vim editor je kar nekaj.

Začeli bomo z ustvarjanjem preprostega skripta, ki ob izvedbi prikaže\"Hello world".

$ vim hello.sh

V datoteko prilepite naslednjo vsebino in jo shranite.

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

Pojdimo po skriptu lupine po vrsticah.

  • Prva vrstica - #!/bin/bash - je znana kot glava shebang. To je posebna konstrukcija, ki označuje, s katerim programom bo interpretirana skripta. V tem primeru bo to lupina bash, označena z/bin/bash. Obstajajo tudi drugi skriptni jeziki, kot je Python, ki je označen z #!/Usr/bin/python3 in Perl, katerega glava shebang je označena z #!/Usr/bin/perl .
  • Druga vrstica je komentar. Komentar je stavek, ki opisuje, kaj naredi skript lupine in se ne zažene, ko se skript zažene. Pred komentarji je vedno znak razpršitve # .
  • Zadnja vrstica je ukaz, ki na terminal natisne sporočilo "Hello World".

Naslednji korak je narediti skript izvedljivim tako, da z ukazom chmod dodelite dovoljenje za izvajanje, kot je prikazano.

$ chmod +x  hello.sh

Na koncu zaženite skript lupine z enim od ukazov:

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

2. Uporaba pogojnih izjav za izvajanje kode

Tako kot drugi programski jeziki se tudi pri bash-skripti za sprejemanje odločitev uporabljajo pogojni stavki, pri katerih se sintaksa le malo razlikuje. Pokrili bomo pogojne izjave if, if-else in elif.

Stavek if lahko uporabimo za testiranje posameznih ali več pogojev. Začeli bomo s temeljno uporabo stavka if za preizkušanje enega samega pogoja. Stavek if je definiran z bloki if ... fi .

if command
then
  statement
fi

Oglejmo si skript lupine spodaj.

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

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

Zgornji skript lupine uporabnika pozove, da navede rezultat, ki se nato shrani v spremenljivko x. Če rezultat ustreza 70, skript vrne izhod\"Dobro delo!". Primerjalni operator == se uporablja za preizkus, ali je vnesena ocena, ki je shranjena v spremenljivki x, enakovredna do 100.

Drugi operaterji primerjave, ki jih lahko uporabite, vključujejo:

  • -eq - enako
  • -ne - Ni enako
  • -lt - Manj kot
  • -le - Manj ali enako
  • -lt - Manj kot
  • -ge - večja ali enaka

Na primer, spodnji blok stavka if izpiše »Work Harder«, če je vhodna ocena katera koli vrednost manjša od 50.

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

Za primere, ko imate dva možna izida: - ali ta ali on - stavek if-else pride prav.

if command
then
  statement1
else
  statement2
fi

Spodnji skript prebere vhodno oceno in preveri, ali je večja ali enaka 70.

Če je rezultat večji ali enak 70, dobite sporočilo z naslovom „Odlično, uspešno ste opravili!“. Če pa rezultat pade pod 70, bo natisnjen izpis »Ni vam uspelo«.

#!/bin/bash

echo 'Enter the score'

read x

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

V scenarijih, kjer obstaja več pogojev in različni izidi, se uporablja stavek if-elif-else. Ta izjava ima naslednjo obliko.

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

Na primer, imamo skript za loterijo, ki preverja, ali je vnesena številka 90, 60 ali 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. Uporaba izjave If z logiko AND

Stavek if lahko skupaj z logičnim operatorjem AND uporabite za izvajanje naloge, če sta izpolnjena dva pogoja. Operator && se uporablja za označevanje logike AND.

#!/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. Uporaba izjave If z logiko OR

Pri uporabi logike OR, ki jo predstavlja simbol || , mora biti eden od pogojev izpolnjen s skriptom, da dobimo pričakovane rezultate.

#!/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

Uporabite zankaste konstrukcije

Bash zanke omogočajo uporabnikom, da izvajajo vrsto nalog, dokler ni dosežen določen rezultat. To pride prav pri opravljanju ponavljajočih se nalog. V tem razdelku si bomo ogledali nekaj zank, ki bi jih našli tudi v drugih programskih jezikih.

To je ena najlažjih zank za delo. Sintaksa je precej preprosta:

while  <some test>
do
 commands
done

Spodnja zanka spodaj navaja vse številke od 1 do 10, ko se izvede.

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

Pogovorimo se o zanki while:

Števec spremenljivk je inicializiran na 1. In medtem ko je spremenljivka manjša ali enaka 10, se bo vrednost števca povečevala, dokler ni izpolnjen pogoj. Vrstica echo $counter natisne vse številke od 1 do 10.

Tako kot zanka while se zanka for uporablja za iterativno izvajanje kode. Tj. ponovite izvajanje kode čim večkrat, kot je določil uporabnik.

Sintaksa je:

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

Zanka for spodaj se ponovi od 1 do 10 in obdela njihove vrednosti na zaslonu.

Boljši način za dosego tega je določitev obsega z uporabo dvojnih zavitih oklepajev {} , kot je prikazano, namesto da bi vnesli vse številke.

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

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

Parametri položaja Bash

Pozicijski parameter je posebna spremenljivka, na katero se sklic sklicuje, ko se vrednosti prenesejo v lupino, vendar je ni mogoče dodeliti. Pozicijski parametri se gibljejo od $0 $1 $2 $3 ...... do 9 $. Poleg vrednosti 9 USD morajo biti parametri zaprti v zavite oklepaje, npr. & # 36 {10}, & # 36 {11}… itd.

Pri izvajanju skripta prvi pozicijski parameter, ki je $0, dobi ime skripta lupine. Parameter $1 zavzame prvo spremenljivko, ki je posredovana terminalu, $2 zavzame drugo, 3 $za tretjo itd.

Ustvarimo skript test.sh, kot je prikazano.

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

Nato izvedite skript in kot argumente navedite ime in drugo ime:

# bash test.sh James Kiarie

Iz izhoda lahko vidimo, da je prva spremenljivka, ki je natisnjena, ime skripte lupine, v tem primeru test.sh. Nato se imena natisnejo, kar ustreza pozicijskim parametrom, definiranim v skriptu lupine.

Pozicijski parametri so koristni, saj vam pomagajo prilagoditi podatke, ki jih vnašate, namesto da izrecno dodelite vrednost spremenljivki.

Izhodne kode ukaza lupine

Začnimo z odgovorom na preprosto vprašanje: Kaj je izhodna koda?

Vsak ukaz, ki ga v lupini izvede uporabnik ali skript lupine, ima status izhoda. Izhodno stanje je celo število.

Izhodno stanje 0 pomeni, da se je ukaz uspešno izvedel brez napak. Karkoli med 1 in 255 kaže, da ukaz ni uspel ali se ni uspešno izvedel.

Če želite poiskati stanje izhoda ukaza, uporabite spremenljivko lupine $? .

Izhodno stanje 1 kaže na splošno napako ali kakršne koli nedopustne napake, kot je urejanje datotek brez dovoljenj sudo.

Stanje izhoda 2 točki zaradi nepravilne uporabe ukaza ali vgrajene spremenljivke lupine.

Stanje izhoda 127 kaže na nedovoljen ukaz, ki običajno povzroči napako 'ukaz ni najden'.

Obdelava izhodnih ukazov lupine znotraj skripta

Pri skriptiranju bash lahko izhod ukaza shranite v spremenljivko za prihodnjo uporabo. To se imenuje tudi zamenjava ukaza lupine in jo je mogoče doseči na naslednje načine.

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

Ukaz date lahko na primer shranite v spremenljivko, imenovano danes, in pokličete skript lupine, da razkrije trenutni datum.

#!/bin/bash

today=$(date)

echo “Today is $today”

Vzemimo še en primer. Recimo, da želite najti veljavne uporabnike za prijavo v vašem sistemu Linux. Kako bi se lotili tega? Najprej je seznam vseh uporabnikov (tako uporabnikov sistema, procesov in uporabnikov) shranjen v datoteki/etc/passwd.

Za ogled datoteke bi morali z ukazom grep poiskati uporabnike z atributom/bin/bash in uporabiti ukaz cut -c 1-10, kot je prikazano, za prikaz prvih 10 znakov imen.

Ukaz cat smo shranili v spremenljivko login_users.

#!/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

S tem se naša vadnica o ustvarjanju preprostih skriptov lupine konča. Upamo, da se vam je to zdelo dragoceno.