logo

Bash-scripting - Inleiding tot Bash en Bash-scripting

Bash is een opdrachtregelinterpreter of Unix Shell en wordt veel gebruikt in het GNU/Linux-besturingssysteem. Het is geschreven door Brian Jhan Fox. Het wordt gebruikt als standaard login-shell voor de meeste Linux-distributies. Scripting wordt gebruikt om de uitvoering van de taken te automatiseren, zodat mensen deze niet individueel hoeven uit te voeren. Bash-scripting is een geweldige manier om verschillende soorten taken in een systeem te automatiseren. Ontwikkelaars kunnen repetitieve taken vermijden met behulp van bash-scripting.

Bash-scripting ondersteunt variabelen, voorwaardelijke instructies en lussen, net als programmeertalen. Hieronder staan ​​enkele toepassingen van Bash Scripts –

Inhoudsopgave



Toepassingen van Bash-scripts:

  • Bestanden manipuleren
  • Uitvoeren van routinetaken zoals back-upbewerkingen
  • Automatisering

De voordelen van het gebruik van Bash-scripts worden hieronder gegeven:

Voordelen van Bash-scripts:

  • Het is simpel.
  • Het helpt om repetitieve taken te voorkomen
  • Makkelijk te gebruiken
  • Vaak uitgevoerde taken kunnen worden geautomatiseerd
  • Een reeks opdrachten kan als één opdracht worden uitgevoerd.

De nadelen van de Bash-scripts worden hieronder gegeven:

Nadelen van Bash-scripts:

  • Elke fout tijdens het schrijven kan kostbaar zijn.
  • Er wordt een nieuw proces gelanceerd voor bijna elke uitgevoerde shell-opdracht
  • Trage uitvoeringssnelheid
  • Compatibiliteitsproblemen tussen verschillende platforms

Hoe Bash-scripts schrijven?

Om een ​​Bash-script te schrijven, volgen we de stappen:

  • Eerst maken we een bestand met de extensie .sh.
  • Vervolgens zullen we de bash-scripts erin opschrijven
  • Daarna geven wij er uitvoeringstoestemming aan.

Om een ​​bestand met de .sh-extensie te maken en te schrijven, kunnen we gebruiken gedit teksteditor. Het commando ervoor zal zijn -

gedit scriptname.sh>

De eerste regel van ons scriptbestand zal zijn:

#!/bin/bash>

Dit zal uitwijzen of het systeem Bash moet gebruiken voor uitvoering. Dan kunnen we onze eigen scripts schrijven.

Laten we een eenvoudig script opschrijven dat enkele regels in de terminal afdrukt. De code ervoor zal zijn -

tekenreeks in int
#!/bin/bash echo 'Hello, techcodeview.com'>

Nu zullen we het bestand opslaan en er uitvoeringsrechten aan geven. Gebruik hiervoor de volgende opdracht:

chmod +x scriptname.sh>

Naast het uitvoeren van het volgende script gebruiken we de volgende opdracht:

./scriptname.sh>

Hier is de terminalshell-afbeelding na het uitvoeren van de bovenstaande opdrachten als volgt:

Hier is de naam van het scriptbestand gfg.sh.

Nu kunnen we ook ingewikkeldere opdrachten schrijven met behulp van Bash-scripts. Hier is een voorbeeld hieronder waarin we een voorwaardeverklaring gebruiken:

Voorbeeldscript:

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi>

Uitgang:

You cannot vote>

Hier is de terminalshell-afbeelding na het uitvoeren van het bovenstaande script als volgt:

Op de bovenstaande manier kunnen we meerdere Bash-opdrachten in één keer uitvoeren.

Laten we nu eens kijken naar de andere belangrijke concepten die verband houden met Bash Scripting.

Bestandsnamen en machtigingen

In het bovenstaande voorbeeld hebben we het bestand opgeslagen met gfg.sh naam en gaf ook uitvoeringsrechten met behulp van chmod commando. Laten we nu eens begrijpen waarom we dat hebben gedaan.

Tijdens het schrijven van bash-scripts moeten we ons bestand opslaan met de .sh-extensie, zodat het Linux-systeem het kan uitvoeren. Wanneer we voor het eerst een bestand maken met de .sh-extensie, heeft het geen uitvoerrechten en zonder de uitvoerrechten zal het script niet werken. We moeten er dus toestemming voor geven om het uit te voeren met behulp van de chmod commando.

De bestandsnaam van een bash-script kan alles zijn, maar volgens afspraak wordt het aanbevolen om snake case ( my_bash_script.sh ) of koppeltekens ( my-bash-script.sh ) te gebruiken voor het benoemen van een scriptbestand.

Variabelen

We kunnen variabelen gebruiken in bash-scripting. Hieronder vindt u een voorbeeldprogramma om het gebruik van variabelen in Bash-scripts te begrijpen.

Voorbeeldscript:

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'>

Uitvoer van variabelen:

The name is SATYAJIT GHOSH and Age is 20>

Hier zijn dus twee variabelen gedeclareerd Naam en nog eentje Leeftijd. Deze variabelen zijn toegankelijk via $Name en $Age. Dat betekent dat we een variabele in een bash-script kunnen declareren met behulp van VariabeleNaam=Waarde en kan er toegang toe krijgen via $Variabelenaam. Hier is de terminalshell-afbeelding na het uitvoeren van het bovenstaande script als volgt:

Java krijgt huidige datum

Er zijn twee soorten variabelen aanwezig binnen Bash Scripting. Conventioneel geldt dat als een variabele binnen een functie wordt gedeclareerd, dit doorgaans a is lokale variabele en als het buiten wordt verklaard, is het a globale variabele . In het geval van een bash-script is dit concept een beetje anders; hier is elke variabele, ongeacht of deze standaard binnen een functie of buiten een functie is geschreven, een globale variabele. Als we een lokale variabele willen maken, moeten we het trefwoord local gebruiken.

Opmerking: Het is het beste om altijd een lokale variabele binnen een functie te gebruiken om onnodige verwarring te voorkomen.

Een voorbeeld hiervan wordt hieronder gegeven –

Voorbeeldscript:

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3'>

Uitvoer van lokale en globale variabelen:

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry>

Hier in dit voorbeeld hierboven is var2 een lokale variabele, dus als we er toegang toe krijgen vanuit de functie, gaat het prima, maar als we er buiten de functie toegang toe proberen te krijgen, geeft het ons een leeg resultaat in de uitvoer.

Aan de andere kant, in tegenstelling tot programmeertalen, fungeert var3, ook al is het binnen een functie gedefinieerd, nog steeds als een globale variabele en is het toegankelijk buiten de functie. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het script -

Input en output

Invoer en uitvoer zijn fundamentele concepten voor shell-scripting. Een script kan één of meer invoer hebben en kan ook nul of veel uitvoer produceren. Het kan zelfs enkele fouten opleveren. Laten we dit begrijpen met een voorbeeld –

Voorbeeldscript:

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$bestandsnaam echo 'Bestand aangemaakt' fi>

Uitvoer van invoer en uitvoer:

Eerste keer:

Enter filename geeks.txt Hello Geek File created>

Tweede keer:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek>

Dus in dit bovenstaande voorbeeld kon het script de eerste keer geen enkel bestand met die bestandsnaam vinden en wordt het else-blok uitgevoerd. Het heeft het bestand gemaakt en enkele gegevens in dat bestand geplaatst. Wanneer we het een tweede keer uitvoeren met dezelfde bestandsnaam, wordt het bestand gevonden. Dus, wordt het if-blok uitgevoerd en wordt de inhoud van het bestand weergegeven. Het lezen van de bestandsinhoud is invoer en bij de eerste keer dat gegevens in het bestand worden geplaatst, wordt dit als uitvoer beschouwd. Hier hebben we gebruik van gemaakt > voor het opslaan van de inhoud in een bestand. De > notatie wordt gebruikt om om te leiden stoer naar een bestand. Aan de andere kant kunnen we het gebruiken 2> notatie om stderr om te leiden, en &> om zowel stdout als stderr om te leiden.

Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het volgende script:

Functies

Bij het programmeren is een functie een codeblok dat bepaalde taken uitvoert en meerdere keren kan worden aangeroepen voor het uitvoeren van taken. Het eenvoudigste voorbeeld van het gebruik van een functie in Bash-scripting kan worden gegeven als:

Voorbeeldscript:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction>

Uitvoer van functies:

Hello World from techcodeview.com>

Het bovenstaande voorbeeld toont een functie die iets afdrukt wanneer deze wordt aangeroepen.

De basissyntaxis voor het schrijven van functies binnen een Bash-script zal dus zijn:

Syntaxis van functies:

#for defining function_name(){ commands ..... } function_name # for calling>

Daarnaast kunnen we ook functies hebben met het doorgeven van argumenten en met retourwaarden.

Besluitvorming

Bij het programmeren is besluitvorming een van de belangrijke concepten. De programmeur biedt een of meer voorwaarden voor de uitvoering van een codeblok. Als aan de voorwaarden is voldaan, wordt dat codeblok alleen uitgevoerd.

Binnen shell-scripting worden twee soorten besluitvormingsinstructies gebruikt. Zij zijn -

1. If-else-verklaring:

De If else-instructie is een voorwaardelijke instructie. Het kan worden gebruikt om twee verschillende codes uit te voeren, afhankelijk van of aan de gegeven voorwaarde is voldaan of niet.

Er zijn een aantal varianten aanwezig binnen de if-else-instructie. Zij zijn -

  • als-fi
  • als-anders-fi
  • if-elif-else-fi
  • genest als-anders

De syntaxis voor de eenvoudigste is:

Syntaxis van If-else-instructie:

if [ expression ]; then statements fi>

Voorbeeldscript:

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi>

Uitvoer van if-else-instructie:

His name is Satyajit. It is true.>

In het bovenstaande voorbeeld komt tijdens het controleren van de voorwaarde de naam overeen en wordt de voorwaarde waar. Daarom wordt het codeblok dat aanwezig is in het if-blok uitgevoerd. Als de naam niet overeenkomt, wordt er geen uitvoer weergegeven. Hieronder ziet u de afbeelding van de terminalshell na het uitvoeren van het volgende script:

2. case-sac-verklaring:

case-sac werkt in principe hetzelfde als de switch-instructie bij het programmeren. Als we meerdere voorwaarden moeten controleren, kan het soms ingewikkeld worden als we if-instructies gebruiken. Op die momenten kunnen we gebruik maken van een case-sac statement. De syntaxis zal zijn –

Syntaxis van case-sac-instructie:

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac>

Voorbeeldscript:

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac>

Uitvoer van case-sac-instructie:

Profession : Technical Content Writer>

In het bovenstaande voorbeeld voerde de case-sac-instructie de instructie uit die deel uitmaakt van het overeenkomende patroon hier, de ‘Naam’. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het volgende script:

String- en numerieke vergelijkingen

De stringvergelijking betekent dat we in de shell-scripting beslissingen kunnen nemen door ook vergelijkingen binnen strings uit te voeren. Hier is een beschrijvende tabel met alle operatoren –

Exploitant Beschrijving
== Retourneert waar als de tekenreeksen gelijk zijn
!= Retourneert waar als de tekenreeksen niet gelijk zijn
-N Retourneert waar als de te testen tekenreeks niet nul is
-Met Retourneert waar als de te testen tekenreeks nul is

Rekenkundige operatoren worden gebruikt voor het controleren van de op rekenkunde gebaseerde voorwaarden. Zoals kleiner dan, groter dan, gelijk aan, etc. Hier is een beschrijvende tabel met alle operatoren –

Exploitant Beschrijving
-gelijk Gelijkwaardig
-ge Groter dan of gelijk aan
-gt Groter dan
-de Minder dan of gelijk
-lt Minder dan
- is Niet gelijk

Hieronder vindt u een eenvoudig voorbeeld van hetzelfde –

Voorbeeldscript:

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi>

Uitvoer van string- en numerieke vergelijkingen:

Equal same>

In dit voorbeeld is de eerste (-eq ) een numerieke vergelijking die controleert op gelijkheid. De tweede ( == ) is ook een controle op gelijkheid, maar dan in strings. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het volgende script:

In de volgende artikelen zullen we meer over dit concept leren.

Freddie Mercurius

Conclusie

In dit artikel bespreken we Bash-scripting, die een cruciale rol speelt bij het automatiseren van taken binnen de Linux-omgeving. Als opdrachtregelinterpreter biedt Bash ontwikkelaars eenvoud en gebruiksgemak bij het maken van scripts die routinematige bewerkingen stroomlijnen, bestanden manipuleren en complexe taken uitvoeren. Hoewel Bash-scripts de productiviteit kunnen verhogen door repetitieve acties te vermijden en reeksen opdrachten efficiënt uit te voeren, komen ze ook met overwegingen zoals het beheren van machtigingen, het omgaan met variabelen en het implementeren van besluitvormingsstructuren. Door Bash-scripting onder de knie te krijgen, kunnen gebruikers de kracht ervan benutten om hun workflow te optimaliseren en systeembeheertaken op Linux-platforms te verbeteren.