Sådan opretter du et Shell-script i linux

Sådan opretter du et Shell-script i linux

Shell er en grænseflade til operativsystemet. Det accepterer kommandoer fra brugere og fortolker dem til operativsystemet. Hvis du vil køre en masse kommandoer sammen, kan du gøre det ved at oprette et shell-script. Shell-scripts er meget nyttige, hvis du skal udføre en opgave rutinemæssigt, som at tage en sikkerhedskopi. Du kan liste disse kommandoer og udføre dem alle med kun et enkelt script. Lad os se, hvordan du kan oprette et shell-script og køre det på Linux.

Oprettelse af et Shell-script

Log ind på din Linux-maskine og åbn terminalen, naviger til den mappe, hvor du vil gemme shell-scriptet. Shell-scripts slutter med udvidelsen .sh. Lad os skabe vores første shell-script. Indtaste

touch script.sh 

Nu er denne scriptfil ikke eksekverbar som standard, vi skal give den eksekverbare tilladelse til denne fil. Indtaste

chmod +x script.sh 

Nu vil vi tilføje nogle kommandoer til dette shell-script. Åbn dette shell-script med en hvilken som helst teksteditor efter eget valg (kommandolinjebaseret eller GUI-baseret) og tilføj nogle kommandoer. Vi vil bruge nano. Indtaste

nano script.sh 

Tilføj følgende kommandoer for at teste dette shell-script

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

Gem ændringerne, og kør shell-scriptet ved at skrive ind

./script.sh 

Skærmbillede af ovenstående trin

Du kan se, det udførte alle de angivne kommandoer.

Kommentarer i shell-scriptet

Enhver linje, der starter med # i shell-scriptet, behandles som en kommentar og ignoreres af shellen under udførelsen, undtagen shebang-linjen, som vi vil se senere i denne artikel. Lad os se et eksempel. Der oprettes et shell-script med følgende indhold.

# This is a comment echo Testing comments in shell script 

Kommentarer i Shell Script

Du kan se, kommentaren bliver ignoreret.

Variabler i Shell Script

Ja, Shell-scripts understøtter brugen af ​​variabler, og vi behøver ikke definere en variabels type under dens erklæring. Der er to typer variabler:

  • Systemdefinerede variabler
  • Brugerdefinerede variabler.

Systemdefinerede variabler, også kaldet miljøvariabler, er generelt med store bogstaver. Du kan se alle de aktuelle miljøvariabler ved at bruge printenv-kommandoen. Brugerdefinerede variabler indstilles af brugeren, og de eksisterer kun under scriptudførelse. Du kan definere en variabel ved blot at skrive dens navn og tildele en værdi med =-tegn og få adgang til en variabel ved at tilføje en $ før variabelnavnet. Variabler er vist i følgende eksempelscript.

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

Variabler i Shell Script

Definition af Shell Script-fortolkeren

Der er mange Shells tilgængelige i Linux, såsom The Bourne Shell(sh), The Korn Shell(ksh) og GNU Bourne-Again Shell(bash). Scripts skrevet til sh-skallen kaldes shell-scripts, og de kan fortolkes af både ksh- og bash-skallerne. ksh og Bash er forbedrede versioner af den originale sh-skal, og de har flere funktioner end sh. Bash er generelt standardskallen i de fleste af Linux-distributionerne, og scripts skrevet specielt til bash-shell kaldes bash-scripts.

Du kan angive, hvilken shell scriptet vil bruge, selvom scriptet udføres fra en anden shell-terminal. For at gøre dette skal du tilføje #! oven på script-filen, efterfulgt af den absolutte sti til den valgte shell. For at angive bash som en fortolker, Tilføj følgende linje oven på shell-scriptet.

#!/bin/bash 

Denne linje kaldes shebang-linjen.

Bemærk: Dette vil kun virke, hvis bash er installeret på dit system.

Sammenligningsoperatører

Du kan sammenligne to variabler i shell-scripting. Vi laver disse sammenligninger for at træffe beslutninger, vi vil se, hvordan man gør det senere i denne artikel, men før det er her en liste over nogle sammenligningsoperatører.

Heltals sammenligning

Operatør Beskrivelse
-ækv er lig med
- er er ikke lig med
-gt er større end
-ge er større end eller lig med
-lt er mindre end
-det er mindre end eller lig med

Streng sammenligning

Operatør Beskrivelse
== er lig med
!= er ikke lig med
< er mindre end i alfabetisk ASCII-rækkefølge
> er større end i alfabetisk ASCII-rækkefølge

Vi tilføjer et før, fordi de skal escapes, når de indtastes i [ ]-konstruktionen. Lad os nu se, hvor disse bruges.

Betingede erklæringer

Betingede sætninger bruges kun til at udføre en kodeblok, når visse betingelser er opfyldt. Shell-scripts understøtter brugen af ​​betingede udsagn. Vi bruger sammenligningsoperatører til at kontrollere betingelserne. Lad os se et par betingede udsagn.

Hvis erklæring

Den kontrollerer betingelsen, og hvis den er betinget sand, udfører den kommandoerne.

Syntaks

if [ condition ] then #statements fi 

Lad os se et eksempel.

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

.if erklæring

Hvis-else erklæring

I en if-else-sætning kan du angive et sæt kommandoer, der skal køres, hvis betingelsen ikke er opfyldt.

Syntaks

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

Lad os se et eksempel

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

.if-else erklæring

Der er andre betingede erklæringer, dem kan du læse om her .

Bemærk: Indtast et mellemrum efter [ og før ], mens du angiver betingelsen, der skal kontrolleres, ellers får du en fejl.

Sløjfer

Ved hjælp af loops kan du et sæt kommandoer igen og igen, indtil en bestemt betingelse er opfyldt. Lad os se nogle af sløjferne.

Mens sløjfe

Den begynder at køre de angivne kommandoer, hvis betingelsen er sand, og gentager dem, indtil betingelsen er falsk.

Syntaks

while [ condition ] do #set of statements done 

Lad os se et eksempel.

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

Mens sløjfe

Vi omslutter en expr-sætning i ` `, når vi tildeler den til en variabel. Du kan læse om kommandoen expr her.

Til sløjfe

I en for-løkke itererer variablen over en liste med værdier og slutter, når der ikke er flere værdier at iterere over.

Syntaks

for var in val1 val2 val3 do #statements done 

Lad os se et eksempel.

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

for sløjfe

Du kan læse om loops i detaljer her .

Positionelle argumenter

Positionelle argumenter er de argumenter eller værdier, som vi sender til shell-scriptet, mens vi udfører scriptet. De tilgås af variablerne $0, $1, $2 ... $9. Ud over det refereres de til af ${10}, ${11} og så videre. $# gemmer antallet af beståede argumenter, og $0 gemmer navnet på scriptet. Lad os se et eksempel for at forstå alt dette.

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

For at sende argumenterne skal du bare skrive dem i terminalen efter scriptnavnet som vist nedenfor.

Positionelle argumenter

Lagring af output af kommandoer

Du kan gemme outputtet af kommandoer inde i en variabel i et shell-script. Der er to måder at gøre det på.

Syntaks

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

Lad os se et eksempel.

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

Lagring af output af kommandoer

Afslut Koder for skalkommandoer

Når en kommando slutter og returnerer kontrollen til den overordnede proces, returnerer den exit-koder mellem 0 og 255. Exit-kode 0 betyder, at kommandoen var vellykket, og enhver anden exit-kode betyder, at kommandoen var mislykket. Du kan se udgangskoden efter at have kørt en kommando ved at få adgang til $? variabel. Se eksemplet nedenfor.

exit kode for shell-kommando

Du kan manuelt indstille en udgangskode for dit shell-script. Dette kan bruges med betingede udsagn til at formidle, om manuskriptets formål blev opnået eller ej.

Eksempel

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

exit kode for shell-kommando