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.