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