logo

Hvordan lage et Shell-skript i linux

Shell er et grensesnitt for operativsystemet. Den aksepterer kommandoer fra brukere og tolker dem til operativsystemet. Hvis du vil kjøre en haug med kommandoer sammen, kan du gjøre det ved å lage et shell-skript. Shell-skript er veldig nyttige hvis du trenger å gjøre en oppgave rutinemessig, som å ta en sikkerhetskopi. Du kan liste disse kommandoene og utføre dem alle med bare ett enkelt skript. La oss se hvordan du kan lage et skallskript og kjøre det på Linux.

Opprette et Shell-skript

Logg på Linux-maskinen din og åpne terminalen, naviger til mappen der du vil lagre skallskriptet. Shell-skript slutter med filtypen .sh. La oss lage vårt første shell-skript. Skriv inn

touch script.sh>

Nå er ikke denne skriptfilen kjørbar som standard, vi må gi den kjørbare tillatelsen til denne filen. Skriv inn



chmod +x script.sh>

Nå vil vi legge til noen kommandoer til dette skallskriptet. Åpne dette skallskriptet med en hvilken som helst tekstredigerer etter eget valg (kommandolinjebasert eller GUI-basert) og legg til noen kommandoer. Vi skal bruke nano. Skriv inn

nano script.sh>

Legg til følgende kommandoer for å teste dette skallskriptet

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

Lagre endringene, og kjør shell-skriptet ved å skrive inn

./script.sh>

Skjermbilde av trinnene ovenfor

Du kan se, den utførte alle de angitte kommandoene.

Kommentarer i shell-skriptet

Enhver linje som starter med # i skallskriptet behandles som en kommentar og ignoreres av skallet under utførelse, bortsett fra shebang-linjen, som vi vil se senere i denne artikkelen. La oss se et eksempel. Et shell-skript lages med følgende innhold.

# This is a comment echo Testing comments in shell script>

Kommentarer i Shell Script

Du kan se, kommentaren blir ignorert.

Variabler i Shell Script

Ja, Shell-skript støtter bruk av variabler, og vi trenger ikke definere en variabels type under deklarasjonen. Det er to typer variabler:

  • Systemdefinerte variabler
  • Brukerdefinerte variabler.

Systemdefinerte variabler, også kalt miljøvariabler, er vanligvis med store bokstaver. Du kan se alle gjeldende miljøvariabler ved å bruke printenv-kommandoen. Brukerdefinerte variabler angis av brukeren, og de eksisterer bare under kjøring av skript. Du kan definere en variabel ved ganske enkelt å skrive inn navnet og tilordne en verdi med =-tegn og få tilgang til en variabel ved å legge til en $ foran variabelnavnet. Variabler er demonstrert i følgende eksempelskript.

latex tekststørrelse
# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name>

Variabler i Shell Script

Definere Shell Script-tolken

Det er mange skjell tilgjengelig i Linux, for eksempel The bourne shell(sh), The Korn Shell(ksh) og GNU Bourne-Again Shell(bash). Skript skrevet for sh-skallet kalles shell-skript, og de kan tolkes av både ksh- og bash-skallene. ksh og Bash er forbedrede versjoner av det originale sh-skallet og de har flere funksjoner enn sh. Bash er generelt standardskallet i de fleste Linux-distribusjoner, og skript skrevet spesielt for bash-skall kalles bash-skript.

Du kan spesifisere hvilket skall skriptet skal bruke, selv om skriptet kjøres fra en annen skallterminal. For å gjøre dette, legg til #! på toppen av skriptfilen, etterfulgt av den absolutte banen til det valgte skallet. For å spesifisere bash som tolk, legg til følgende linje på toppen av shell-skriptet.

#!/bin/bash>

Denne linjen kalles shebang-linjen.

Merk: Dette vil bare fungere hvis bash er installert på systemet ditt.

Sammenligningsoperatører

Du kan sammenligne to variabler i shell-skripting. Vi gjør disse sammenligningene for å ta avgjørelser, vi vil se hvordan du gjør det senere i denne artikkelen, men før det er her en liste over noen sammenligningsoperatører.

Heltallssammenlikning

Operatør Beskrivelse
-eq er lik
- er er ikke lik
-gt er større enn
-ge er større enn eller lik
-lt er mindre enn
-de er mindre enn eller lik

Strengesammenligning

Operatør Beskrivelse
== er lik
!= er ikke lik
< er mindre enn, i ASCII alfabetisk rekkefølge
> er større enn, i ASCII alfabetisk rekkefølge

Vi legger til en før fordi de må escapes når de skrives inn i [ ]-konstruksjonen. La oss nå se hvor disse brukes.

Betingede uttalelser

Betingede setninger brukes til å utføre en kodeblokk bare når visse betingelser er oppfylt. Shell-skript støtter bruk av betingede utsagn. Vi bruker sammenligningsoperatører for å sjekke forholdene. La oss se noen betingede uttalelser.

gjennomstrekning

Hvis uttalelse

Den sjekker tilstanden, og hvis den er betinget sann, utfører den kommandoene.

Syntaks

if [ condition ] then #statements fi>

La oss se et eksempel.

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

.if-uttalelse

If-else-uttalelse

I en if-else-setning kan du spesifisere et sett med kommandoer som skal kjøres hvis betingelsen ikke er oppfylt.

Syntaks

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

La oss 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-uttalelse

Det er andre betingede uttalelser, du kan lese om dem her .

java-punkt

Merk: Skriv inn et mellomrom etter [ og før ] mens du spesifiserer betingelsen som skal sjekkes, ellers får du en feilmelding.

Løkker

Ved å bruke looper kan du et sett med kommandoer om og om igjen, til en viss betingelse er oppfylt. La oss se noen av løkkene.

Mens loop

Den begynner å kjøre de angitte kommandoene hvis betingelsen er sann og gjentar dem til betingelsen er usann.

Syntaks

while [ condition ] do #set of statements done>

La oss se et eksempel.

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

Mens loop

Vi omslutter en expr-setning i ` ` når vi tilordner den til en variabel. Du kan lese om expr-kommandoen her.

For loop

I en for-løkke itererer variabelen over en liste med verdier og slutter når det ikke er flere verdier å iterere over.

Syntaks

for var in val1 val2 val3 do #statements done>

La oss se et eksempel.

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

for løkke

Du kan lese om løkker i detalj her .

Posisjonsargumenter

Posisjonelle argumenter er argumentene eller verdiene som vi sender til shell-skriptet mens vi kjører skriptet. De er tilgjengelige av variablene

Shell er et grensesnitt for operativsystemet. Den aksepterer kommandoer fra brukere og tolker dem til operativsystemet. Hvis du vil kjøre en haug med kommandoer sammen, kan du gjøre det ved å lage et shell-skript. Shell-skript er veldig nyttige hvis du trenger å gjøre en oppgave rutinemessig, som å ta en sikkerhetskopi. Du kan liste disse kommandoene og utføre dem alle med bare ett enkelt skript. La oss se hvordan du kan lage et skallskript og kjøre det på Linux.

Opprette et Shell-skript

Logg på Linux-maskinen din og åpne terminalen, naviger til mappen der du vil lagre skallskriptet. Shell-skript slutter med filtypen .sh. La oss lage vårt første shell-skript. Skriv inn

touch script.sh>

Nå er ikke denne skriptfilen kjørbar som standard, vi må gi den kjørbare tillatelsen til denne filen. Skriv inn

chmod +x script.sh>

Nå vil vi legge til noen kommandoer til dette skallskriptet. Åpne dette skallskriptet med en hvilken som helst tekstredigerer etter eget valg (kommandolinjebasert eller GUI-basert) og legg til noen kommandoer. Vi skal bruke nano. Skriv inn

nano script.sh>

Legg til følgende kommandoer for å teste dette skallskriptet

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

Lagre endringene, og kjør shell-skriptet ved å skrive inn

./script.sh>

Skjermbilde av trinnene ovenfor

Du kan se, den utførte alle de angitte kommandoene.

Kommentarer i shell-skriptet

Enhver linje som starter med # i skallskriptet behandles som en kommentar og ignoreres av skallet under utførelse, bortsett fra shebang-linjen, som vi vil se senere i denne artikkelen. La oss se et eksempel. Et shell-skript lages med følgende innhold.

# This is a comment echo Testing comments in shell script>

Kommentarer i Shell Script

Du kan se, kommentaren blir ignorert.

Variabler i Shell Script

Ja, Shell-skript støtter bruk av variabler, og vi trenger ikke definere en variabels type under deklarasjonen. Det er to typer variabler:

  • Systemdefinerte variabler
  • Brukerdefinerte variabler.

Systemdefinerte variabler, også kalt miljøvariabler, er vanligvis med store bokstaver. Du kan se alle gjeldende miljøvariabler ved å bruke printenv-kommandoen. Brukerdefinerte variabler angis av brukeren, og de eksisterer bare under kjøring av skript. Du kan definere en variabel ved ganske enkelt å skrive inn navnet og tilordne en verdi med =-tegn og få tilgang til en variabel ved å legge til en $ foran variabelnavnet. Variabler er demonstrert i følgende eksempelskript.

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

Variabler i Shell Script

Definere Shell Script-tolken

Det er mange skjell tilgjengelig i Linux, for eksempel The bourne shell(sh), The Korn Shell(ksh) og GNU Bourne-Again Shell(bash). Skript skrevet for sh-skallet kalles shell-skript, og de kan tolkes av både ksh- og bash-skallene. ksh og Bash er forbedrede versjoner av det originale sh-skallet og de har flere funksjoner enn sh. Bash er generelt standardskallet i de fleste Linux-distribusjoner, og skript skrevet spesielt for bash-skall kalles bash-skript.

Du kan spesifisere hvilket skall skriptet skal bruke, selv om skriptet kjøres fra en annen skallterminal. For å gjøre dette, legg til #! på toppen av skriptfilen, etterfulgt av den absolutte banen til det valgte skallet. For å spesifisere bash som tolk, legg til følgende linje på toppen av shell-skriptet.

#!/bin/bash>

Denne linjen kalles shebang-linjen.

Merk: Dette vil bare fungere hvis bash er installert på systemet ditt.

Sammenligningsoperatører

Du kan sammenligne to variabler i shell-skripting. Vi gjør disse sammenligningene for å ta avgjørelser, vi vil se hvordan du gjør det senere i denne artikkelen, men før det er her en liste over noen sammenligningsoperatører.

Heltallssammenlikning

Operatør Beskrivelse
-eq er lik
- er er ikke lik
-gt er større enn
-ge er større enn eller lik
-lt er mindre enn
-de er mindre enn eller lik

Strengesammenligning

Operatør Beskrivelse
== er lik
!= er ikke lik
< er mindre enn, i ASCII alfabetisk rekkefølge
> er større enn, i ASCII alfabetisk rekkefølge

Vi legger til en før fordi de må escapes når de skrives inn i [ ]-konstruksjonen. La oss nå se hvor disse brukes.

Betingede uttalelser

Betingede setninger brukes til å utføre en kodeblokk bare når visse betingelser er oppfylt. Shell-skript støtter bruk av betingede utsagn. Vi bruker sammenligningsoperatører for å sjekke forholdene. La oss se noen betingede uttalelser.

Hvis uttalelse

Den sjekker tilstanden, og hvis den er betinget sann, utfører den kommandoene.

Syntaks

if [ condition ] then #statements fi>

La oss se et eksempel.

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

.if-uttalelse

If-else-uttalelse

I en if-else-setning kan du spesifisere et sett med kommandoer som skal kjøres hvis betingelsen ikke er oppfylt.

Syntaks

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

La oss 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-uttalelse

Det er andre betingede uttalelser, du kan lese om dem her .

Merk: Skriv inn et mellomrom etter [ og før ] mens du spesifiserer betingelsen som skal sjekkes, ellers får du en feilmelding.

Løkker

Ved å bruke looper kan du et sett med kommandoer om og om igjen, til en viss betingelse er oppfylt. La oss se noen av løkkene.

Mens loop

Den begynner å kjøre de angitte kommandoene hvis betingelsen er sann og gjentar dem til betingelsen er usann.

Syntaks

while [ condition ] do #set of statements done>

La oss se et eksempel.

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

Mens loop

Vi omslutter en expr-setning i ` ` når vi tilordner den til en variabel. Du kan lese om expr-kommandoen her.

For loop

I en for-løkke itererer variabelen over en liste med verdier og slutter når det ikke er flere verdier å iterere over.

Syntaks

for var in val1 val2 val3 do #statements done>

La oss se et eksempel.

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

for løkke

Du kan lese om løkker i detalj her .

Posisjonsargumenter

Posisjonelle argumenter er argumentene eller verdiene som vi sender til shell-skriptet mens vi kjører skriptet. De er tilgjengelige av variablene $0, $1, $2 ... $9. Utover det refereres de til av ${10}, ${11} og så videre. $# lagrer antall beståtte argumenter og $0 lagrer navnet på skriptet. La oss se et eksempel for å 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 å sende argumentene, skriv dem bare inn i terminalen etter skriptnavnet som vist nedenfor.

Posisjonsargumenter

Lagre utdata fra kommandoer

Du kan lagre utdataene til kommandoer i en variabel i et shell-skript. Det er to måter å gjøre det på.

Syntaks

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

La oss se et eksempel.

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

Lagre utdata fra kommandoer

Avslutt koder for skallkommandoer

Når en kommando avsluttes og returnerer kontrollen til den overordnede prosessen, returnerer den utgangskoder mellom 0 og 255. Utgangskode 0 betyr at kommandoen var vellykket, og enhver annen utgangskode betyr at kommandoen mislyktes. Du kan se utgangskoden etter å ha kjørt en kommando ved å gå til $? variabel. Se eksempelet nedenfor.

exit-kode for skallkommando

Du kan manuelt angi en utgangskode for skallskriptet ditt. Dette kan brukes med betingede utsagn for å formidle om manusets formål ble oppnådd eller ikke.

Eksempel

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

exit-kode for skallkommando



, , ... . Utover det refereres de til av , og så videre. $# lagrer antall beståtte argumenter og

Shell er et grensesnitt for operativsystemet. Den aksepterer kommandoer fra brukere og tolker dem til operativsystemet. Hvis du vil kjøre en haug med kommandoer sammen, kan du gjøre det ved å lage et shell-skript. Shell-skript er veldig nyttige hvis du trenger å gjøre en oppgave rutinemessig, som å ta en sikkerhetskopi. Du kan liste disse kommandoene og utføre dem alle med bare ett enkelt skript. La oss se hvordan du kan lage et skallskript og kjøre det på Linux.

Opprette et Shell-skript

Logg på Linux-maskinen din og åpne terminalen, naviger til mappen der du vil lagre skallskriptet. Shell-skript slutter med filtypen .sh. La oss lage vårt første shell-skript. Skriv inn

touch script.sh>

Nå er ikke denne skriptfilen kjørbar som standard, vi må gi den kjørbare tillatelsen til denne filen. Skriv inn

chmod +x script.sh>

Nå vil vi legge til noen kommandoer til dette skallskriptet. Åpne dette skallskriptet med en hvilken som helst tekstredigerer etter eget valg (kommandolinjebasert eller GUI-basert) og legg til noen kommandoer. Vi skal bruke nano. Skriv inn

nano script.sh>

Legg til følgende kommandoer for å teste dette skallskriptet

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

Lagre endringene, og kjør shell-skriptet ved å skrive inn

./script.sh>

Skjermbilde av trinnene ovenfor

Du kan se, den utførte alle de angitte kommandoene.

Kommentarer i shell-skriptet

Enhver linje som starter med # i skallskriptet behandles som en kommentar og ignoreres av skallet under utførelse, bortsett fra shebang-linjen, som vi vil se senere i denne artikkelen. La oss se et eksempel. Et shell-skript lages med følgende innhold.

# This is a comment echo Testing comments in shell script>

Kommentarer i Shell Script

Du kan se, kommentaren blir ignorert.

Variabler i Shell Script

Ja, Shell-skript støtter bruk av variabler, og vi trenger ikke definere en variabels type under deklarasjonen. Det er to typer variabler:

  • Systemdefinerte variabler
  • Brukerdefinerte variabler.

Systemdefinerte variabler, også kalt miljøvariabler, er vanligvis med store bokstaver. Du kan se alle gjeldende miljøvariabler ved å bruke printenv-kommandoen. Brukerdefinerte variabler angis av brukeren, og de eksisterer bare under kjøring av skript. Du kan definere en variabel ved ganske enkelt å skrive inn navnet og tilordne en verdi med =-tegn og få tilgang til en variabel ved å legge til en $ foran variabelnavnet. Variabler er demonstrert i følgende eksempelskript.

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

Variabler i Shell Script

Definere Shell Script-tolken

Det er mange skjell tilgjengelig i Linux, for eksempel The bourne shell(sh), The Korn Shell(ksh) og GNU Bourne-Again Shell(bash). Skript skrevet for sh-skallet kalles shell-skript, og de kan tolkes av både ksh- og bash-skallene. ksh og Bash er forbedrede versjoner av det originale sh-skallet og de har flere funksjoner enn sh. Bash er generelt standardskallet i de fleste Linux-distribusjoner, og skript skrevet spesielt for bash-skall kalles bash-skript.

Du kan spesifisere hvilket skall skriptet skal bruke, selv om skriptet kjøres fra en annen skallterminal. For å gjøre dette, legg til #! på toppen av skriptfilen, etterfulgt av den absolutte banen til det valgte skallet. For å spesifisere bash som tolk, legg til følgende linje på toppen av shell-skriptet.

#!/bin/bash>

Denne linjen kalles shebang-linjen.

Merk: Dette vil bare fungere hvis bash er installert på systemet ditt.

Sammenligningsoperatører

Du kan sammenligne to variabler i shell-skripting. Vi gjør disse sammenligningene for å ta avgjørelser, vi vil se hvordan du gjør det senere i denne artikkelen, men før det er her en liste over noen sammenligningsoperatører.

Heltallssammenlikning

Operatør Beskrivelse
-eq er lik
- er er ikke lik
-gt er større enn
-ge er større enn eller lik
-lt er mindre enn
-de er mindre enn eller lik

Strengesammenligning

Operatør Beskrivelse
== er lik
!= er ikke lik
< er mindre enn, i ASCII alfabetisk rekkefølge
> er større enn, i ASCII alfabetisk rekkefølge

Vi legger til en før fordi de må escapes når de skrives inn i [ ]-konstruksjonen. La oss nå se hvor disse brukes.

Betingede uttalelser

Betingede setninger brukes til å utføre en kodeblokk bare når visse betingelser er oppfylt. Shell-skript støtter bruk av betingede utsagn. Vi bruker sammenligningsoperatører for å sjekke forholdene. La oss se noen betingede uttalelser.

Hvis uttalelse

Den sjekker tilstanden, og hvis den er betinget sann, utfører den kommandoene.

Syntaks

if [ condition ] then #statements fi>

La oss se et eksempel.

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

.if-uttalelse

If-else-uttalelse

I en if-else-setning kan du spesifisere et sett med kommandoer som skal kjøres hvis betingelsen ikke er oppfylt.

Syntaks

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

La oss 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-uttalelse

Det er andre betingede uttalelser, du kan lese om dem her .

Merk: Skriv inn et mellomrom etter [ og før ] mens du spesifiserer betingelsen som skal sjekkes, ellers får du en feilmelding.

Løkker

Ved å bruke looper kan du et sett med kommandoer om og om igjen, til en viss betingelse er oppfylt. La oss se noen av løkkene.

Mens loop

Den begynner å kjøre de angitte kommandoene hvis betingelsen er sann og gjentar dem til betingelsen er usann.

Syntaks

while [ condition ] do #set of statements done>

La oss se et eksempel.

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

Mens loop

Vi omslutter en expr-setning i ` ` når vi tilordner den til en variabel. Du kan lese om expr-kommandoen her.

For loop

I en for-løkke itererer variabelen over en liste med verdier og slutter når det ikke er flere verdier å iterere over.

Syntaks

for var in val1 val2 val3 do #statements done>

La oss se et eksempel.

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

for løkke

Du kan lese om løkker i detalj her .

Posisjonsargumenter

Posisjonelle argumenter er argumentene eller verdiene som vi sender til shell-skriptet mens vi kjører skriptet. De er tilgjengelige av variablene $0, $1, $2 ... $9. Utover det refereres de til av ${10}, ${11} og så videre. $# lagrer antall beståtte argumenter og $0 lagrer navnet på skriptet. La oss se et eksempel for å 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 å sende argumentene, skriv dem bare inn i terminalen etter skriptnavnet som vist nedenfor.

Posisjonsargumenter

Lagre utdata fra kommandoer

Du kan lagre utdataene til kommandoer i en variabel i et shell-skript. Det er to måter å gjøre det på.

Syntaks

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

La oss se et eksempel.

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

Lagre utdata fra kommandoer

Avslutt koder for skallkommandoer

Når en kommando avsluttes og returnerer kontrollen til den overordnede prosessen, returnerer den utgangskoder mellom 0 og 255. Utgangskode 0 betyr at kommandoen var vellykket, og enhver annen utgangskode betyr at kommandoen mislyktes. Du kan se utgangskoden etter å ha kjørt en kommando ved å gå til $? variabel. Se eksempelet nedenfor.

exit-kode for skallkommando

Du kan manuelt angi en utgangskode for skallskriptet ditt. Dette kan brukes med betingede utsagn for å formidle om manusets formål ble oppnådd eller ikke.

Eksempel

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

exit-kode for skallkommando



lagrer navnet på skriptet. La oss se et eksempel for å forstå alt dette.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is 

Shell er et grensesnitt for operativsystemet. Den aksepterer kommandoer fra brukere og tolker dem til operativsystemet. Hvis du vil kjøre en haug med kommandoer sammen, kan du gjøre det ved å lage et shell-skript. Shell-skript er veldig nyttige hvis du trenger å gjøre en oppgave rutinemessig, som å ta en sikkerhetskopi. Du kan liste disse kommandoene og utføre dem alle med bare ett enkelt skript. La oss se hvordan du kan lage et skallskript og kjøre det på Linux.

Opprette et Shell-skript

Logg på Linux-maskinen din og åpne terminalen, naviger til mappen der du vil lagre skallskriptet. Shell-skript slutter med filtypen .sh. La oss lage vårt første shell-skript. Skriv inn

touch script.sh>

Nå er ikke denne skriptfilen kjørbar som standard, vi må gi den kjørbare tillatelsen til denne filen. Skriv inn

chmod +x script.sh>

Nå vil vi legge til noen kommandoer til dette skallskriptet. Åpne dette skallskriptet med en hvilken som helst tekstredigerer etter eget valg (kommandolinjebasert eller GUI-basert) og legg til noen kommandoer. Vi skal bruke nano. Skriv inn

nano script.sh>

Legg til følgende kommandoer for å teste dette skallskriptet

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

Lagre endringene, og kjør shell-skriptet ved å skrive inn

./script.sh>

Skjermbilde av trinnene ovenfor

Du kan se, den utførte alle de angitte kommandoene.

Kommentarer i shell-skriptet

Enhver linje som starter med # i skallskriptet behandles som en kommentar og ignoreres av skallet under utførelse, bortsett fra shebang-linjen, som vi vil se senere i denne artikkelen. La oss se et eksempel. Et shell-skript lages med følgende innhold.

# This is a comment echo Testing comments in shell script>

Kommentarer i Shell Script

Du kan se, kommentaren blir ignorert.

Variabler i Shell Script

Ja, Shell-skript støtter bruk av variabler, og vi trenger ikke definere en variabels type under deklarasjonen. Det er to typer variabler:

  • Systemdefinerte variabler
  • Brukerdefinerte variabler.

Systemdefinerte variabler, også kalt miljøvariabler, er vanligvis med store bokstaver. Du kan se alle gjeldende miljøvariabler ved å bruke printenv-kommandoen. Brukerdefinerte variabler angis av brukeren, og de eksisterer bare under kjøring av skript. Du kan definere en variabel ved ganske enkelt å skrive inn navnet og tilordne en verdi med =-tegn og få tilgang til en variabel ved å legge til en $ foran variabelnavnet. Variabler er demonstrert i følgende eksempelskript.

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

Variabler i Shell Script

Definere Shell Script-tolken

Det er mange skjell tilgjengelig i Linux, for eksempel The bourne shell(sh), The Korn Shell(ksh) og GNU Bourne-Again Shell(bash). Skript skrevet for sh-skallet kalles shell-skript, og de kan tolkes av både ksh- og bash-skallene. ksh og Bash er forbedrede versjoner av det originale sh-skallet og de har flere funksjoner enn sh. Bash er generelt standardskallet i de fleste Linux-distribusjoner, og skript skrevet spesielt for bash-skall kalles bash-skript.

Du kan spesifisere hvilket skall skriptet skal bruke, selv om skriptet kjøres fra en annen skallterminal. For å gjøre dette, legg til #! på toppen av skriptfilen, etterfulgt av den absolutte banen til det valgte skallet. For å spesifisere bash som tolk, legg til følgende linje på toppen av shell-skriptet.

#!/bin/bash>

Denne linjen kalles shebang-linjen.

Merk: Dette vil bare fungere hvis bash er installert på systemet ditt.

Sammenligningsoperatører

Du kan sammenligne to variabler i shell-skripting. Vi gjør disse sammenligningene for å ta avgjørelser, vi vil se hvordan du gjør det senere i denne artikkelen, men før det er her en liste over noen sammenligningsoperatører.

Heltallssammenlikning

Operatør Beskrivelse
-eq er lik
- er er ikke lik
-gt er større enn
-ge er større enn eller lik
-lt er mindre enn
-de er mindre enn eller lik

Strengesammenligning

Operatør Beskrivelse
== er lik
!= er ikke lik
< er mindre enn, i ASCII alfabetisk rekkefølge
> er større enn, i ASCII alfabetisk rekkefølge

Vi legger til en før fordi de må escapes når de skrives inn i [ ]-konstruksjonen. La oss nå se hvor disse brukes.

Betingede uttalelser

Betingede setninger brukes til å utføre en kodeblokk bare når visse betingelser er oppfylt. Shell-skript støtter bruk av betingede utsagn. Vi bruker sammenligningsoperatører for å sjekke forholdene. La oss se noen betingede uttalelser.

Hvis uttalelse

Den sjekker tilstanden, og hvis den er betinget sann, utfører den kommandoene.

Syntaks

if [ condition ] then #statements fi>

La oss se et eksempel.

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

.if-uttalelse

If-else-uttalelse

I en if-else-setning kan du spesifisere et sett med kommandoer som skal kjøres hvis betingelsen ikke er oppfylt.

Syntaks

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

La oss 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-uttalelse

Det er andre betingede uttalelser, du kan lese om dem her .

Merk: Skriv inn et mellomrom etter [ og før ] mens du spesifiserer betingelsen som skal sjekkes, ellers får du en feilmelding.

Løkker

Ved å bruke looper kan du et sett med kommandoer om og om igjen, til en viss betingelse er oppfylt. La oss se noen av løkkene.

Mens loop

Den begynner å kjøre de angitte kommandoene hvis betingelsen er sann og gjentar dem til betingelsen er usann.

Syntaks

while [ condition ] do #set of statements done>

La oss se et eksempel.

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

Mens loop

Vi omslutter en expr-setning i ` ` når vi tilordner den til en variabel. Du kan lese om expr-kommandoen her.

For loop

I en for-løkke itererer variabelen over en liste med verdier og slutter når det ikke er flere verdier å iterere over.

Syntaks

for var in val1 val2 val3 do #statements done>

La oss se et eksempel.

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

for løkke

Du kan lese om løkker i detalj her .

Posisjonsargumenter

Posisjonelle argumenter er argumentene eller verdiene som vi sender til shell-skriptet mens vi kjører skriptet. De er tilgjengelige av variablene $0, $1, $2 ... $9. Utover det refereres de til av ${10}, ${11} og så videre. $# lagrer antall beståtte argumenter og $0 lagrer navnet på skriptet. La oss se et eksempel for å 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 å sende argumentene, skriv dem bare inn i terminalen etter skriptnavnet som vist nedenfor.

Posisjonsargumenter

Lagre utdata fra kommandoer

Du kan lagre utdataene til kommandoer i en variabel i et shell-skript. Det er to måter å gjøre det på.

Syntaks

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

La oss se et eksempel.

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

Lagre utdata fra kommandoer

Avslutt koder for skallkommandoer

Når en kommando avsluttes og returnerer kontrollen til den overordnede prosessen, returnerer den utgangskoder mellom 0 og 255. Utgangskode 0 betyr at kommandoen var vellykket, og enhver annen utgangskode betyr at kommandoen mislyktes. Du kan se utgangskoden etter å ha kjørt en kommando ved å gå til $? variabel. Se eksempelet nedenfor.

exit-kode for skallkommando

Du kan manuelt angi en utgangskode for skallskriptet ditt. Dette kan brukes med betingede utsagn for å formidle om manusets formål ble oppnådd eller ikke.

Eksempel

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

exit-kode for skallkommando



' echo 'First argument is ' echo 'Second argument is '>

For å sende argumentene, skriv dem bare inn i terminalen etter skriptnavnet som vist nedenfor.

Posisjonsargumenter

Lagre utdata fra kommandoer

Du kan lagre utdataene til kommandoer i en variabel i et shell-skript. Det er to måter å gjøre det på.

hvordan åpne en json-fil

Syntaks

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

La oss se et eksempel.

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

Lagre utdata fra kommandoer

Avslutt koder for skallkommandoer

Når en kommando avsluttes og returnerer kontrollen til den overordnede prosessen, returnerer den utgangskoder mellom 0 og 255. Utgangskode 0 betyr at kommandoen var vellykket, og enhver annen utgangskode betyr at kommandoen mislyktes. Du kan se utgangskoden etter å ha kjørt en kommando ved å gå til $? variabel. Se eksempelet nedenfor.

exit-kode for skallkommando

Du kan manuelt angi en utgangskode for skallskriptet ditt. Dette kan brukes med betingede utsagn for å formidle om manusets formål ble oppnådd eller ikke.

Eksempel

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

exit-kode for skallkommando