Het programma "Hello world" is het allereerste programma dat een programmeur schrijft terwijl hij een nieuwe taal leert. Het is een programma dat de " Hello world" als output afdrukt. Je kunt dus als volgt een bestand helloword.sh maken met de editor (vim of nano):
$ nano helloworld.sh
Kopieer nu onderstaande regels naar 'helloworld.sh' en sla het op.
#! /bin/bash echo "Hello world"
Nu kun je de opdracht uitvoeren:
$ bash helloworld.sh
Een andere methode is om het bestand eerst uitvoerbaar te maken:
$ chmod a+x helloworld.sh
En voer nu het bestand uit met behulp van de onderstaande opdracht.
$ ./helloworld.sh
Echo- opdracht is de meest voorkomende en meest gebruikte opdracht in Linux. Het wordt gebruikt om tekst af te drukken of uit te voeren in de bash. Het heeft veel opties die verschillende bewerkingen uitvoeren.
Syntaxis:
echo [options] [ARGUMENTS]
Hier zijn de opties:
-n
wordt gebruikt om een volgende nieuwe regel te onderdrukken
-e
wordt gebruikt om backslash-escape tekens te interpreteren
-E
wordt gebruikt om de interpretatie van de escape-tekens uit te schakelen, en het is de standaardoptie voor het echo-commando.
Maak een nieuw bestand echo.sh en voeg de onderstaande regels eraan toe.
#! /bin/bash echo "Student Linux" echo -n "Ik ben een Linux-gebruiker" echo -e "\nGood \t Day \t All"
Hier is \n een escape-teken voor een nieuwe regel en \t is een escape-teken voor de horizontale tab.
Opmerkingen zijn opmerkingen van een programmeur over het doel van de code of logica. Het is een goede gewoonte om opmerkingen toe te voegen, zodat iedereen in de toekomst code kan begrijpen door alleen opmerkingen te lezen. Opmerkingen maken deel uit van de code, maar worden genegeerd door de compiler. In het bash-script wordt elke regel die begint met # als commentaar beschouwd. Bijvoorbeeld:
#! /bin/bash # dit is een commentaar echo "Commentaarvoorbeeld"
Hier is '# dit is een opmerking' een opmerking, en wanneer we deze scriptcompiler uitvoeren, negeert deze de regel.
Opmerkingen kunnen zijn:
We gebruiken '#' voor commentaar van één regel en: 'inhoud' voor commentaar met meerdere regels. Controleer het onderstaande commando voor zowel enkele als talrijke opmerkingen in een bash-script.
#! /bin/bash : ' Dit script berekent de som van 2 en 8. ' ((som=2+8)) # resultaat is een echo met som echo "som is $som"
Variabelen zijn benoemde symbolen die worden gebruikt om waarden tijdelijk op te slaan. Het kan een tekenreeks of numerieke waarde zijn die we op elke plaats in het script kunnen gebruiken. Je kunt variabelen maken en er waarden aan toewijzen. Variabelenamen moeten beschrijvend zijn, zodat je het doel kunt begrijpen waarmee je die variabele hebt gemaakt.
We hebben drie soorten variabelen in bash-scripts:
De volgende zijn de andere unieke vooraf ingestelde variabelen:
Gebruik de volgende opdracht om de actieve omgevingsvariabelen in je Bash-sessie te zien:
env | less
:q
ga je uit env.
Door de gebruiker gedefinieerde variabelen zijn variabelen die door ons in ons script worden ingesteld. We hebben bijvoorbeeld de variabele 'jaar' om het huidige jaar op te slaan, zoals hieronder.
jaar=2020
En we kunnen later gebruiken
echo $jaar
je kunt zien dat we met $
naar de waarde verwezen.
Dus maak nu een bestand variables.sh en voeg de onderstaande regels erin toe.
#! /bin/bash website=www.noorderpoort.nl year=2021 # Gebruikersnaam ophalen van speciale variabelen name=$USER echo "Welkom op $website" echo -e "Hallo $name \n" echo -e "Jaar = $year \n" echo "Wordt uitgevoerd op $HOSTNAME"
Het verkrijgen van gebruikersinvoer is cruciaal voor het interactief maken van een script, dus voor dit doel gebruiken we in bash-script het 'read'-commando.
#! /bin/bash echo "Wat is je leeftijd?" read leeftijd echo "Je leeftijd is $leeftijd"
We kunnen ook gebruikersinvoer lezen van opdrachtargumenten, net als elke andere programmeertaal. We kunnen deze argumenten vervolgens in onze scripts gebruiken als $1, $2, enzovoort, afhankelijk van het aantal argumenten dat we hebben opgegeven. Maak een bestand 'arguments.sh' en kopieer de onderstaande regels erin.
#! /bin/bash echo "Totaal aantal argumenten: $#" echo "Gebruikersnaam: $1" echo "Leeftijd: $2" echo "Volledige naam: $3"
Voer nu het scriptbestand 'arguments.sh' uit met drie extra parameters achter de naam.
bash arguments.sh patrick 29 'Patrick Linux'
Loops worden gebruikt in elke programmeertaal waarbij je dezelfde code herhaaldelijk moet uitvoeren. Er zijn twee soorten loops in bash-script while en for loops.
Het wordt gebruikt wanneer je de coderegel een onbekend aantal keren moet herhalen totdat deze aan bepaalde voorwaarden voldoet. Hier is hoe het wordt gevormd:
#! /bin/bash
while [CONDITION]
do
[COMMANDS]
done
De voorwaarde wordt geëvalueerd voordat de opdrachten bij elke iteratie worden uitgevoerd, en deze wordt uitgevoerd totdat de voorwaarde naar false evalueert en de lus wordt beëindigd.
#! /bin/bash
i=0
while [ $i -le 4 ]
do
echo Number: $i
((i++))
done
De for
lus herhaalt zich over een lijst met items en voert de opgegeven reeks opdrachten uit. De Bash- for
lus heeft de volgende vorm:
#! /bin/bash
for item in [LIST]
do
[COMMANDS]
done
In het onderstaande voorbeeld zal de lus elk item herhalen en een tabel met variabele i genereren.
#! /bin/bash i=2 for (( counter=1; counter<=10; counter++ )) do ((result= $i * $counter)) echo "$i x $counter = $result" done
Voorwaardelijke verklaringen zijn een van de fundamentele concepten van elke programmeertaal. Je neemt beslissingen op basis van bepaalde voorwaarden die zijn vervuld. In het bash-script hebben we voorwaardelijke blokken.
In een bash-script, als de conditie een bepaalde waarde heeft, laten we eens kijken naar de basisconditie.
if Condition
then
STATEMENTS
fi
Je kunt zien of statements beginnen met het evalueren van de conditie en Run-statements tussen 'then' en 'fi', op voorwaarde dat de “if” -voorwaarde resulteert in True, anders wordt de instructie genegeerd.
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
fi
In het bovenstaande voorbeeld wordt de gebruiker gevraagd een getal in te voeren, en als het getal meer is dan 10, zie je de uitvoer 'De variabele is groter dan 10.', anders zie je niets.
Nu gaan we ook een “if else” -blok toevoegen, dat wordt uitgevoerd als de voorwaarde onwaar is.
if Condition
then
STATEMENTS1
else
STATEMENTS2
fi
Dus we zullen het bovenstaande voorbeeld aanpassen.
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
else
echo "The variable is equal or less than 10."
fi
Als je de code uitvoert en een getal invoert, zal het script een tekst afdrukken op basis van of het getal groter of kleiner/gelijk is aan 10.
Bash heeft ook een gelijkwaardige syntaxis voor 'else if'.
if Condition1
then
STATEMENTS1
elif Condition2
then
STATEMENTS2
else
STATEMENTS3
fi
Dus na het aanpassen van het bovenstaande voorbeeld:
#! /bin/bash
echo -n "Enter a number: "
read VAR
if [[ $VAR -gt 10 ]]
then
echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
echo "The variable is equal to 10."
else
echo "The variable is less than 10."
fi
Net als andere programmeertalen heeft het bash-script ook het concept van functies. Hiermee kan de gebruiker een aangepast codeblok schrijven dat steeds opnieuw moet worden gebruikt.
Syntaxis:
function FunctionName () { statements }
Nu zullen we een functie 'som' maken die invoernummers van de gebruiker zal aannemen en de som van deze nummers als uitvoer zal tonen.
#! /bin/bash function Sum() { echo -n "Enter First Number: " read a echo -n "Enter Second Number: " read b echo "Sum is: $(( a+b ))" } Sum
Het verwerken van strings is een essentieel onderdeel van bash-scripting. Bash-script heeft een eenvoudige manier om de lengte van een stringvariabele te krijgen. In het voorbeeld laten we je zien hoe je de lengte van een string in bash-script kunt krijgen.
#! /bin/bash Str="Welcome to noorderpoort.nl" echo "Length is: ${#Str}"
Bash-script biedt een moeiteloze manier om string bewerkingen af te handelen, zoals het samenvoegen van meerdere strings tot een enkele string. In het voorbeeld laten we je zien hoe je dat doet.
#! /bin/bash string1="noorder" string2="poort.nl" string=$string1$string2 echo "$string is a great website."
Bash-script heeft een handige en gemakkelijke manier om de tekst binnen een string te vinden en te vervangen. Het kan op twee manieren worden gebruikt:
${string/pattern/replacement}
Dit vervangt alleen de eerste overeenkomst binnen de opgegeven tekenreeks. Om alle overeenkomsten te vervangen, zullen we deze gebruiken zoals hieronder weergegeven:
${string//pattern/replacement}
In dit voorbeeld zullen we beide opties gebruiken om je het verschil in output te laten zien:
#! /bin/bash Str="Path of the bash is /bin/bash" # Finding and Replacing First match only echo ${filename/bash/sh} # Finding and Replacing all matches echo ${filename//bash/sh}
Het volgende voorbeeld laat zien hoe je een directory kunt maken vanuit een shellscript. Het script krijgt de directorynaam van de gebruiker en controleert of deze al bestaat of niet. Als het bestaat, zou je een bericht "Directory Exists" moeten zien; anders wordt er een map aangemaakt.
#! /bin/bash echo -n "Enter directory name ->" read dir if [ -d "$dir" ] then echo "Directory exists" else `mkdir $dir` echo "Directory created" fi
Met Bash kun je bestanden heel effectief lezen. Het onderstaande voorbeeld laat zien hoe je een bestand kunt lezen met shellscripts. Maak een bestand met de naam 'bedrijven.txt' met de volgende inhoud.
Google Amazon Microsoft Macdonald KFC Apple
Dit script leest het bovenstaande bestand en geeft de uitvoer weer.
#! /bin/bash file='bedrijven.txt' while read line; do echo $line done < $file
Met behulp van een bash-script kun je ook een bestand verwijderen. In het voorbeeld wordt de gebruiker gevraagd om de bestandsnaam als invoer op te geven en deze te verwijderen als deze bestaat. Het gebruikt de Linux rm-opdracht voor het verwijderen hier.
#! /bin/bash echo -n "Enter filename ->" read name rm -i $name echo "File Deleted"
Dit voorbeeld toont je een snelle serverstatistieken. Als systeembeheerder helpt dit bash-script je om belangrijke details te krijgen, zoals uptime, laatste logins, schijf- en geheugengebruik voor een Linux-machine.
#! /bin/bash date echo "uptime:" uptime echo "Currently connected:" w echo "--------------------" echo "Last logins:" last -a | head -3 echo "--------------------" echo "Disk and memory usage:" df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}' free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'y echo "--------------------"
Je moet het script uitvoeren als rootgebruiker.
Dit kleine Linux shell-script upgradet en schoont het systeem automatisch op in plaats van het handmatig te doen.
#! /bin/bash echo -e "\n$(date "+%d-%m-%Y --- %T") --- Starting work\n" apt-get update apt-get -y upgrade apt-get -y autoremove apt-get autoclean echo -e "\n$(date "+%T") \t Script Terminated"
Je moet dit script uitvoeren als rootgebruiker.
Laatste script alleen uitvoeren als je ook echt de update/upgrade wilt uitvoeren. Bedenk goed, dit kost tijd, de services gaan offline!
Wij hopen dat bovenstaande voorbeeld scripts een goed beeld hebben gegeven over bash-scripting en vooral mee aan de slag gaan en proberen om reperterende handelingen te scripten.