Hoe maak je een Shell-script in Linux?
Shell is een interface van het besturingssysteem. Het accepteert opdrachten van gebruikers en interpreteert deze naar het besturingssysteem. Als u een aantal opdrachten samen wilt uitvoeren, kunt u dit doen door een shellscript te maken. Shell-scripts zijn erg handig als u routinematig een taak moet uitvoeren, zoals het maken van een back-up. U kunt deze opdrachten opsommen en ze allemaal uitvoeren met slechts één script. Laten we eens kijken hoe u een shellscript kunt maken en dit op Linux kunt uitvoeren.
Een shellscript maken
Log in op uw Linux-machine en open de terminal, navigeer naar de map waarin u het shell-script wilt opslaan. Shell-scripts eindigen met de extensie .sh. Laten we ons eerste shellscript maken. Typ in
touch script.sh
Nu is dit scriptbestand standaard niet uitvoerbaar, we moeten de uitvoerbare toestemming aan dit bestand geven. Typ in
chmod +x script.sh
Nu zullen we enkele opdrachten aan dit shellscript toevoegen. Open dit shellscript met elke teksteditor van uw keuze (op opdrachtregel of GUI gebaseerd) en voeg enkele opdrachten toe. We zullen nano gebruiken. Typ in
nano script.sh
Voeg de volgende opdrachten toe om dit shellscript te testen
echo This is my first shell script touch testfile ls echo End of my shell script
Sla de wijzigingen op en voer het shellscript uit door te typen
./script.sh
Screenshot van bovenstaande stappen
U kunt zien dat het alle opgegeven opdrachten heeft uitgevoerd.
Opmerkingen in het shellscript
Elke regel die begint met # in het shellscript wordt behandeld als commentaar en wordt tijdens de uitvoering door de shell genegeerd, behalve de shebang-regel, die we later in dit artikel zullen zien. Laten we een voorbeeld bekijken. Er wordt een shellscript gemaakt met de volgende inhoud.
# This is a comment echo Testing comments in shell script
Opmerkingen in Shell-script
U ziet dat de opmerking wordt genegeerd.
Variabelen in Shell-script
Ja, Shell-scripts ondersteunen het gebruik van variabelen, en we hoeven het type van een variabele niet te definiëren tijdens de declaratie ervan. Er zijn twee soorten variabelen:
- Door het systeem gedefinieerde variabelen
- Door de gebruiker gedefinieerde variabelen.
Door het systeem gedefinieerde variabelen, ook wel omgevingsvariabelen genoemd, worden doorgaans met een hoofdletter geschreven. U kunt alle huidige omgevingsvariabelen bekijken met de opdracht printenv. Door de gebruiker gedefinieerde variabelen worden door de gebruiker ingesteld en bestaan alleen tijdens de uitvoering van het script. U kunt een variabele definiëren door eenvoudigweg de naam ervan te typen en een waarde toe te wijzen met het =-teken. U kunt toegang krijgen tot een variabele door een $ toe te voegen vóór de naam van de variabele. Variabelen worden gedemonstreerd in het volgende voorbeeldscript.
# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name
Variabelen in Shell-script
De Shell Script-interpreter definiëren
Er zijn veel Shells beschikbaar in Linux, zoals The bourne shell(sh), The Korn Shell(ksh) en GNU Bourne-Again Shell(bash). Scripts die voor de sh-shell zijn geschreven, worden shell-scripts genoemd en kunnen door zowel de ksh- als de bash-shell worden geïnterpreteerd. ksh en Bash zijn verbeterde versies van de originele sh-shell en hebben meer functies dan sh. Bash is over het algemeen de standaardshell in de meeste Linux-distributies en scripts die speciaal voor de bash-shell zijn geschreven, worden bash-scripts genoemd.
U kunt opgeven welke shell het script zal gebruiken, zelfs als het script wordt uitgevoerd vanaf een andere shell-terminal. Om dit te doen, voegt u #! bovenaan het scriptbestand, gevolgd door het absolute pad van de shell naar keuze. Om bash als tolk te specificeren, voegt u de volgende regel toe bovenop het shellscript.
#!/bin/bash
Deze lijn wordt de shebang-lijn genoemd.
Opmerking: Dit werkt alleen als bash op uw systeem is geïnstalleerd.
Vergelijkingsoperatoren
U kunt twee variabelen vergelijken in shell-scripting. We doen deze vergelijkingen om beslissingen te nemen, we zullen later in dit artikel zien hoe we dat moeten doen, maar daarvoor is hier een lijst met enkele vergelijkingsoperatoren.
Vergelijking van gehele getallen
| Exploitant | Beschrijving |
|---|---|
| -gelijk | is gelijk aan |
| - is | is niet gelijk aan |
| -gt | is groter dan |
| -ge | is groter dan of gelijk aan |
| -lt | is minder dan |
| - de | kleiner is dan of gelijk is aan |
String-vergelijking
| Exploitant | Beschrijving |
|---|---|
| == | is gelijk aan |
| != | is niet gelijk aan |
| < | is kleiner dan, in alfabetische ASCII-volgorde |
| > | is groter dan, in alfabetische ASCII-volgorde |
We voegen een before toe omdat ze moeten worden geëscaped wanneer ze in de constructie [ ] worden getypt. Laten we nu eens kijken waar deze worden gebruikt.
Voorwaardelijke stellingen
Voorwaardelijke instructies worden alleen gebruikt om een codeblok uit te voeren als aan bepaalde voorwaarden is voldaan. Shell-scripts ondersteunen het gebruik van voorwaardelijke instructies. We gebruiken vergelijkingsoperatoren om de voorwaarden te controleren. Laten we een paar voorwaardelijke uitspraken bekijken.
Indien verklaring
Het controleert de voorwaarde en als de voorwaarde waar is, voert het de opdrachten uit.
Syntaxis
if [ condition ] then #statements fi
Laten we een voorbeeld bekijken.
#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi
.if-verklaring
If-else verklaring
In een if-else-instructie kunt u een reeks opdrachten opgeven die moeten worden uitgevoerd als niet aan de voorwaarde wordt voldaan.
Syntaxis
if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi
Laten we een voorbeeld bekijken
#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi
.if-else-instructie
Er zijn nog andere voorwaardelijke verklaringen, u kunt erover lezen hier .
Opmerking: Typ een spatie na [ en vóór ] terwijl u de voorwaarde opgeeft die moet worden gecontroleerd, anders krijgt u een foutmelding.
Lussen
Met behulp van lussen kunt u een reeks opdrachten steeds opnieuw uitvoeren, totdat aan een bepaalde voorwaarde is voldaan. Laten we enkele van de lussen bekijken.
Herhalingslus
Het begint de opgegeven opdrachten uit te voeren als de voorwaarde waar is en herhaalt deze totdat de voorwaarde onwaar is.
Syntaxis
while [ condition ] do #set of statements done
Laten we een voorbeeld bekijken.
#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done
Herhalingslus
We plaatsen een expr-instructie tussen ` ` wanneer we deze aan een variabele toewijzen. Je kunt hier meer lezen over het expr-commando.
For loop
In een for-lus itereert de variabele over een lijst met waarden en eindigt wanneer er geen waarden meer zijn om over te itereren.
Syntaxis
for var in val1 val2 val3 do #statements done
Laten we een voorbeeld bekijken.
#!/bin/sh for var in 2 4 5 8 do echo $var done
for loop
U kunt in detail over lussen lezen hier .
Positionele argumenten
Positionele argumenten zijn de argumenten of waarden die we doorgeven aan het shellscript tijdens het uitvoeren van het script. Ze zijn toegankelijk via variabelen $0, $1, $2 … $9. Daarnaast wordt er naar verwezen met ${10}, ${11} enzovoort. $# slaat het aantal doorgegeven argumenten op en $0 slaat de naam van het script op. Laten we een voorbeeld bekijken om dit allemaal te begrijpen.
#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2'
Om de argumenten door te geven, typt u ze gewoon in de terminal na de scriptnaam, zoals hieronder weergegeven.
Positionele argumenten
Het opslaan van de uitvoer van opdrachten
U kunt de uitvoer van opdrachten opslaan in een variabele in een shellscript. Er zijn twee manieren om dit te doen.
Syntaxis
#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command`
Laten we een voorbeeld bekijken.
#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d
Het opslaan van de uitvoer van opdrachten
Afsluiten Codes van shell-opdrachten
Telkens wanneer een commando eindigt en de controle teruggeeft aan het ouderproces, retourneert het exitcodes tussen 0 en 255. Exitcode 0 betekent dat het commando succesvol was, en elke andere exitcode betekent dat het commando niet succesvol was. U kunt de afsluitcode bekijken nadat u een opdracht hebt uitgevoerd door naar het $? variabel. Zie het onderstaande voorbeeld.
exitcode van shell-opdracht
U kunt handmatig een afsluitcode voor uw shellscript instellen. Dit kan worden gebruikt met voorwaardelijke uitspraken om aan te geven of het doel van het script is bereikt of niet.
Voorbeeld
#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi
exitcode van shell-opdracht