Kaip sukurti „Shell“ scenarijų „Linux“.

Kaip sukurti „Shell“ scenarijų „Linux“.

Shell yra operacinės sistemos sąsaja. Jis priima komandas iš vartotojų ir interpretuoja jas operacinei sistemai. Jei norite kartu paleisti daugybę komandų, tai galite padaryti sukurdami apvalkalo scenarijų. Shell scenarijai yra labai naudingi, jei reikia reguliariai atlikti užduotį, pvz., kurti atsarginę kopiją. Galite išvardyti šias komandas ir jas visas vykdyti naudodami tik vieną scenarijų. Pažiūrėkime, kaip galite sukurti apvalkalo scenarijų ir paleisti jį „Linux“.

Shell scenarijaus kūrimas

Prisijunkite prie „Linux“ įrenginio ir atidarykite terminalą, eikite į aplanką, kuriame norite išsaugoti apvalkalo scenarijų. Shell scenarijai baigiasi plėtiniu .sh. Sukurkime savo pirmąjį apvalkalo scenarijų. Įrašykite

touch script.sh 

Dabar šis scenarijaus failas nėra vykdomas pagal numatytuosius nustatymus, mes turime suteikti šiam failui vykdomąjį leidimą. Įrašykite

chmod +x script.sh 

Dabar prie šio apvalkalo scenarijaus pridėsime keletą komandų. Atidarykite šį apvalkalo scenarijų naudodami bet kurį pasirinktą teksto rengyklę (pagrįstą komandų eilute arba GUI) ir pridėkite keletą komandų. Naudosime nano. Įrašykite

nano script.sh 

Norėdami išbandyti šį apvalkalo scenarijų, pridėkite šias komandas

echo This is my first shell script touch testfile ls echo End of my shell script 

Išsaugokite pakeitimus ir paleiskite apvalkalo scenarijų įvesdami

./script.sh 

Aukščiau pateiktų veiksmų ekrano kopija

Matote, įvykdė visas nurodytas komandas.

Komentarai apvalkalo scenarijuje

Bet kuri apvalkalo scenarijaus eilutė, kuri prasideda #, yra traktuojama kaip komentaras ir apvalkalas jos nepaiso vykdymo metu, išskyrus eilutę shebang, kurią pamatysime vėliau šiame straipsnyje. Pažiūrėkime pavyzdį. Sukuriamas apvalkalo scenarijus su tokiu turiniu.

# This is a comment echo Testing comments in shell script 

Komentarai „Shell Script“.

Matote, komentaras ignoruojamas.

Kintamieji „Shell Script“.

Taip, „Shell“ scenarijai palaiko kintamųjų naudojimą, todėl jo deklaravimo metu nereikia apibrėžti kintamojo tipo. Yra dviejų tipų kintamieji:

  • Sistemos apibrėžti kintamieji
  • Vartotojo nustatyti kintamieji.

Sistemos apibrėžti kintamieji, dar vadinami aplinkos kintamaisiais, paprastai rašomi didžiosiomis raidėmis. Visus esamus aplinkos kintamuosius galite peržiūrėti naudodami komandą printenv. Vartotojo nustatytus kintamuosius nustato vartotojas ir jie egzistuoja tik scenarijaus vykdymo metu. Galite apibrėžti kintamąjį tiesiog įvesdami jo pavadinimą ir priskirdami reikšmę su = ženklu, o pasiekti kintamąjį prieš kintamojo pavadinimą pridėję $. Kintamieji parodyti toliau pateiktame scenarijaus pavyzdyje.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name 

Kintamieji „Shell Script“.

Shell Script interpretatoriaus apibrėžimas

Linux sistemoje yra daug apvalkalų, tokių kaip The bourne shell (sh), The Korn Shell (ksh) ir GNU Bourne-Again Shell (bash). Skriptai, parašyti sh shell, vadinami apvalkalo scenarijais, ir juos gali interpretuoti ir ksh, ir bash apvalkalai. ksh ir Bash yra patobulintos originalaus sh apvalkalo versijos ir turi daugiau funkcijų nei sh. „Bash“ paprastai yra numatytasis apvalkalas daugelyje „Linux“ platinimų, o scenarijai, parašyti specialiai „bash“ apvalkalui, vadinami bash scenarijais.

Galite nurodyti, kurį apvalkalą naudos scenarijus, net jei scenarijus vykdomas iš kito apvalkalo terminalo. Norėdami tai padaryti, pridėkite #! scenarijaus failo viršuje, po kurio nurodomas absoliutus pasirinkto apvalkalo kelias. Norėdami nurodyti bash kaip vertėją, pridėkite šią eilutę apvalkalo scenarijaus viršuje.

#!/bin/bash 

Ši linija vadinama shebang linija.

Pastaba: Tai veiks tik tuo atveju, jei jūsų sistemoje įdiegtas bash.

Palyginimo operatoriai

Galite palyginti du kintamuosius apvalkalo scenarijuose. Mes atliekame šiuos palyginimus, kad priimtume sprendimus. Kaip tai padaryti, pamatysime vėliau šiame straipsnyje, tačiau prieš tai pateikiame kai kurių palyginimo operatorių sąrašą.

Sveikųjų skaičių palyginimas

operatorius apibūdinimas
-ekv yra lygus
- yra nėra lygus
-gt yra didesnis nei
-ge yra didesnis arba lygus
-lt mažiau nei
- yra mažesnis arba lygus

Stygų palyginimas

operatorius apibūdinimas
== yra lygus
!= nėra lygus
< yra mažesnis nei, ASCII abėcėlės tvarka
> yra didesnis nei, ASCII abėcėlės tvarka

Prieš tai pridedame , nes įvedant [ ] konstrukciją, jie turi būti pabėgę. Dabar pažiūrėkime, kur jie naudojami.

Sąlyginiai teiginiai

Sąlyginiai sakiniai naudojami kodo blokui vykdyti tik tada, kai įvykdomos tam tikros sąlygos. Shell scenarijai palaiko sąlyginių teiginių naudojimą. Sąlygoms patikrinti naudojame palyginimo operatorius. Pažiūrėkime keletą sąlyginių teiginių.

Jei teiginys

Jis tikrina sąlygą ir, jei sąlyginis teisingas, vykdo komandas.

Sintaksė

if [ condition ] then #statements fi 

Pažiūrėkime pavyzdį.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi 

.jei teiginys

Jei-kitaip teiginys

Jei-else sakinyje galite nurodyti komandų rinkinį, kuris bus paleistas, jei sąlyga neįvykdyta.

Sintaksė

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi 

Pažiūrėkime pavyzdį

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi 

.jei-kitaip teiginys

Yra ir kitų sąlyginių teiginių, apie juos galite pasiskaityti čia .

Pastaba: Nurodydami sąlygą, kurią reikia patikrinti, įveskite tarpą po [ ir prieš ], kitaip gausite klaidą.

Kilpos

Naudodami kilpas, komandų rinkinį galite atlikti vėl ir vėl, kol bus įvykdyta tam tikra sąlyga. Pažiūrėkime kai kurias kilpas.

Nors kilpa

Jis pradeda vykdyti nurodytas komandas, jei sąlyga yra teisinga, ir kartoja jas, kol sąlyga yra klaidinga.

Sintaksė

while [ condition ] do #set of statements done 

Pažiūrėkime pavyzdį.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done 

Nors kilpa

Priskirdami jį kintamajam, į `` įtraukiame sakinį expr. Apie komandą expr galite perskaityti čia.

Už kilpą

For cikle kintamasis kartojasi per reikšmių sąrašą ir baigiasi, kai nebėra reikšmių, kurias būtų galima kartoti.

Sintaksė

for var in val1 val2 val3 do #statements done 

Pažiūrėkime pavyzdį.

#!/bin/sh for var in 2 4 5 8 do echo $var done 

už kilpą

Išsamiai galite perskaityti apie kilpas čia .

Poziciniai argumentai

Pozicijos argumentai yra argumentai arba reikšmės, kurias perduodame apvalkalo scenarijui vykdydami scenarijų. Jie pasiekiami naudojant kintamuosius $0, $1, $2 … $9. Be to, juos nurodo ${10}, ${11} ir pan. $# saugo pateiktų argumentų skaičių, o $0 – scenarijaus pavadinimą. Pažiūrėkime pavyzdį, kad suprastume visa tai.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2' 

Norėdami perduoti argumentus, tiesiog įveskite juos terminale po scenarijaus pavadinimo, kaip parodyta toliau.

Poziciniai argumentai

Komandų išvesties saugojimas

Komandų išvestį galite saugoti apvalkalo scenarijaus kintamajame. Yra du būdai tai padaryti.

Sintaksė

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command` 

Pažiūrėkime pavyzdį.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d 

Komandų išvesties saugojimas

Išeiti Shell komandų kodai

Kai komanda baigiasi ir grąžina valdiklį pirminiam procesui, ji grąžina išėjimo kodus nuo 0 iki 255. Išėjimo kodas 0 reiškia, kad komanda buvo sėkminga, o bet koks kitas išėjimo kodas reiškia, kad komanda buvo nesėkminga. Išėjimo kodą galite peržiūrėti paleidę bet kurią komandą, pasiekę $? kintamasis. Žiūrėkite toliau pateiktą pavyzdį.

Shell komandos išėjimo kodas

Galite rankiniu būdu nustatyti apvalkalo scenarijaus išėjimo kodą. Tai gali būti naudojama su sąlyginiais teiginiais, siekiant parodyti, ar scenarijaus tikslas buvo pasiektas, ar ne.

Pavyzdys

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi 

Shell komandos išėjimo kodas