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