Kā izveidot Shell skriptu Linux

Kā izveidot Shell skriptu Linux

Shell ir operētājsistēmas saskarne. Tā pieņem komandas no lietotājiem un interpretē tās operētājsistēmā. Ja vēlaties kopā palaist vairākas komandas, varat to izdarīt, izveidojot čaulas skriptu. Shell skripti ir ļoti noderīgi, ja jums regulāri jāveic kāds uzdevums, piemēram, jāveido dublējums. Varat uzskaitīt šīs komandas un izpildīt tās visas, izmantojot tikai vienu skriptu. Apskatīsim, kā izveidot čaulas skriptu un palaist to operētājsistēmā Linux.

Shell skripta izveide

Piesakieties savā Linux mašīnā un atveriet termināli, dodieties uz mapi, kurā vēlaties saglabāt čaulas skriptu. Shell skripti beidzas ar paplašinājumu .sh. Izveidosim savu pirmo čaulas skriptu. Ieraksti

touch script.sh 

Tagad šis skripta fails pēc noklusējuma nav izpildāms, mums ir jāpiešķir izpildāmā atļauja šim failam. Ieraksti

chmod +x script.sh 

Tagad šim čaulas skriptam pievienosim dažas komandas. Atveriet šo čaulas skriptu ar jebkuru teksta redaktoru pēc jūsu izvēles (uz komandrindas vai GUI bāzes) un pievienojiet dažas komandas. Mēs izmantosim nano. Ieraksti

nano script.sh 

Pievienojiet šādas komandas, lai pārbaudītu šo čaulas skriptu

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

Saglabājiet izmaiņas un palaidiet čaulas skriptu, ierakstot

./script.sh 

Iepriekš minēto darbību ekrānuzņēmums

Var redzēt, ka tas izpildīja visas norādītās komandas.

Komentāri čaulas skriptā

Jebkura rinda, kas čaulas skriptā sākas ar #, tiek uzskatīta par komentāru, un apvalks to ignorē izpildes laikā, izņemot shebang rindu, ko mēs redzēsim vēlāk šajā rakstā. Apskatīsim piemēru. Tiek izveidots čaulas skripts ar šādu saturu.

# This is a comment echo Testing comments in shell script 

Komentāri Shell skriptā

Var redzēt, komentārs tiek ignorēts.

Mainīgie Shell skriptā

Jā, Shell skripti atbalsta mainīgo lielumu izmantošanu, un mums nav jādefinē mainīgā tips tā deklarēšanas laikā. Ir divu veidu mainīgie:

  • Sistēmas definētie mainīgie
  • Lietotāja definēti mainīgie.

Sistēmas definētie mainīgie, saukti arī par vides mainīgajiem, parasti tiek rakstīti ar lielo burtu. Varat skatīt visus pašreizējos vides mainīgos, izmantojot komandu printenv. Lietotāja definētos mainīgos iestata lietotājs, un tie pastāv tikai skripta izpildes laikā. Varat definēt mainīgo, vienkārši ierakstot tā nosaukumu un piešķirot vērtību ar = zīmi, un piekļūt mainīgajam, pievienojot $ pirms mainīgā nosaukuma. Mainīgie ir parādīti nākamajā skripta piemērā.

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

Mainīgie Shell skriptā

Shell skripta tulka definēšana

Operētājsistēmā Linux ir pieejami daudzi apvalki, piemēram, The Bourne shell (sh), The Korn Shell (ksh) un GNU Bourne-Again Shell (bash). Skriptus, kas rakstīti sh čaulai, sauc par čaulas skriptiem, un tos var interpretēt gan ksh, gan bash apvalks. ksh un Bash ir uzlabotas sākotnējās sh čaulas versijas, un tām ir vairāk funkciju nekā sh. Bash parasti ir noklusējuma apvalks lielākajā daļā Linux izplatījumu, un skriptus, kas rakstīti īpaši bash apvalkam, sauc par bash skriptiem.

Varat norādīt, kuru čaulu skripts izmantos, pat ja skripts tiek izpildīts no cita čaulas termināļa. Lai to izdarītu, pievienojiet #! skripta faila augšpusē, kam seko izvēlētās čaulas absolūtais ceļš. Lai norādītu bash kā tulku, pievienojiet šādu rindiņu čaulas skripta augšpusē.

#!/bin/bash 

Šo līniju sauc par shebanga līniju.

Piezīme: Tas darbosies tikai tad, ja jūsu sistēmā ir instalēts bash.

Salīdzināšanas operatori

Jūs varat salīdzināt divus mainīgos čaulas skriptēšanā. Mēs veicam šos salīdzinājumus, lai pieņemtu lēmumus, redzēsim, kā to izdarīt vēlāk šajā rakstā, bet pirms tam šeit ir saraksts ar dažiem salīdzināšanas operatoriem.

Veselu skaitļu salīdzinājums

Operators Apraksts
-ekv ir vienāds ar
- ir nav vienāds ar
-gt ir labāks par
-ge ir lielāks vai vienāds ar
-lt ir mazāks par
- ir mazāks vai vienāds ar

Stīgu salīdzinājums

Operators Apraksts
== ir vienāds ar
!= nav vienāds ar
< ir mazāks par, ASCII alfabētiskā secībā
> ir lielāks par, ASCII alfabētiskā secībā

Mēs pievienojam pirms tam, jo ​​tie ir jāaizpilda, ievadot [ ] konstrukciju. Tagad redzēsim, kur tie tiek izmantoti.

Nosacīti paziņojumi

Nosacījumu paziņojumi tiek izmantoti, lai izpildītu koda bloku tikai tad, ja ir izpildīti noteikti nosacījumi. Shell skripti atbalsta nosacījumu paziņojumu izmantošanu. Mēs izmantojam salīdzināšanas operatorus, lai pārbaudītu nosacījumus. Apskatīsim dažus nosacījumus.

Ja paziņojums

Tas pārbauda nosacījumu un, ja tas ir nosacīts patiess, tas izpilda komandas.

Sintakse

if [ condition ] then #statements fi 

Apskatīsim piemēru.

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

.ja paziņojums

Ja-cits paziņojums

Paziņojumā if-else varat norādīt komandu kopu, kas jāpalaiž, ja nosacījums nav izpildīts.

Sintakse

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

Apskatīsim piemēru

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

.ja-cits paziņojums

Ir arī citi nosacīti apgalvojumi, par tiem var lasīt šeit .

Piezīme: Ierakstiet atstarpi aiz [ un pirms ], vienlaikus norādot nosacījumu, kas jāpārbauda, ​​pretējā gadījumā tiks parādīta kļūda.

Cilpas

Izmantojot cilpas, komandu kopu var veikt atkal un atkal, līdz tiek izpildīts noteikts nosacījums. Apskatīsim dažas cilpas.

Kamēr cilpa

Tas sāk izpildīt norādītās komandas, ja nosacījums ir patiess, un atkārto tās, līdz nosacījums ir nepatiess.

Sintakse

while [ condition ] do #set of statements done 

Apskatīsim piemēru.

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

Kamēr cilpa

Piešķirot to mainīgajam, mēs iekļaujam izteiksmes priekšrakstu `` ietvaros. Par komandu expr varat lasīt šeit.

Cilpai

For cilpā mainīgais atkārto vērtību sarakstu un beidzas, kad vairs nav vērtību, ko atkārtot.

Sintakse

for var in val1 val2 val3 do #statements done 

Apskatīsim piemēru.

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

cilpai

Sīkāk varat lasīt par cilpām šeit .

Pozicionālie argumenti

Pozicionālie argumenti ir argumenti vai vērtības, ko mēs nododam čaulas skriptam, izpildot skriptu. Tiem var piekļūt, izmantojot mainīgos $0, $1, $2 … $9. Turklāt uz tiem atsaucas ${10}, ${11} un tā tālāk. $# saglabā nodoto argumentu skaitu un $0 saglabā skripta nosaukumu. Apskatīsim piemēru, lai to visu saprastu.

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

Lai nodotu argumentus, vienkārši ierakstiet tos terminālī aiz skripta nosaukuma, kā parādīts zemāk.

Pozicionālie argumenti

Komandu izvades saglabāšana

Komandu izvadi var saglabāt mainīgā čaulas skriptā. Ir divi veidi, kā to izdarīt.

Sintakse

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

Apskatīsim piemēru.

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

Komandu izvades saglabāšana

Iziet no čaulas komandu kodiem

Ikreiz, kad komanda beidzas un atgriež vadīklu vecākprocesam, tā atgriež izejas kodus no 0 līdz 255. Izejas kods 0 nozīmē, ka komanda bija veiksmīga, un jebkurš cits izejas kods nozīmē, ka komanda bija neveiksmīga. Varat skatīt izejas kodu pēc jebkuras komandas palaišanas, piekļūstot $? mainīgs. Skatiet tālāk redzamo piemēru.

čaulas komandas izejas kods

Varat manuāli iestatīt čaulas skripta izejas kodu. To var izmantot ar nosacījumu paziņojumiem, lai norādītu, vai skripta mērķis ir sasniegts vai nē.

Piemērs

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

čaulas komandas izejas kods