Zoeken op website

Hoe u de foutopsporingsmodus van Shell Script in Linux kunt inschakelen


Een script is eenvoudigweg een lijst met opdrachten die in een bestand zijn opgeslagen. In plaats van een reeks opdrachten uit te voeren door ze steeds één voor één op de terminal te typen, kan een systeemgebruiker ze allemaal (opdrachten) in een bestand opslaan en het bestand herhaaldelijk oproepen om de opdrachten verschillende keren opnieuw uit te voeren.

Terwijl we scripting leren of tijdens de vroege stadia van het schrijven van scripts, beginnen we normaal gesproken met het schrijven van kleine of korte scripts met een paar regels opdrachten. En meestal debuggen we dergelijke scripts door niets anders te doen dan naar de uitvoer ervan te kijken en ervoor te zorgen dat ze werken zoals we bedoeld hadden.

Naarmate we echter zeer lange en geavanceerde scripts beginnen te schrijven met duizenden regels opdrachten, bijvoorbeeld scripts die systeeminstellingen wijzigen, cruciale back-ups maken via netwerken en nog veel meer, zullen we ons realiseren dat alleen kijken naar de uitvoer van een script niet voldoende is. genoeg om bugs in een script te vinden.

Daarom zullen we in deze shellscript-foutopsporing in de Linux-serie doorlopen hoe je shell-script-foutopsporing inschakelt, verder gaan om de verschillende shell-script-foutopsporingsmodi uit te leggen en hoe je deze in de volgende serie kunt gebruiken.

Hoe u een script start

Een script onderscheidt zich van andere bestanden door de eerste regel, die een #! (She-bang – definieert het bestandstype) en een padnaam (pad naar tolk) bevat waarmee het systeem wordt geïnformeerd dat het bestand een verzameling opdrachten is die door het opgegeven programma (interpreter) zullen worden geïnterpreteerd.

Hieronder staan voorbeelden van de “eerste regels” in verschillende soorten scripts:

#!/bin/sh          [For sh scripting]
#!/bin/bash        [For bash scripting] 
#!/usr/bin/perl    [For perl programming]
#!/bin/awk -f      [For awk scripting]   

Opmerking: De eerste regel of #! kan worden weggelaten als een script alleen een set standaard systeemopdrachten bevat, zonder enige interne shell-richtlijnen.

Hoe een shell-script in Linux uit te voeren

De conventionele syntaxis voor het aanroepen van een shellscript is:

script_name  argument1 ... argumentN

Een andere mogelijke vorm is door duidelijk de shell te specificeren die het script zal uitvoeren, zoals hieronder:

shell script_name argument1 ... argumentN  

Bijvoorbeeld:

/bin/bash script_name argument1 ... argumentN     [For bash scripting]
/bin/ksh script_name argument1 ... argumentN      [For ksh scripting]
/bin/sh script_name argument1 ... argumentN       [For sh scripting]

Voor scripts die #! niet als eerste regel hebben en alleen basissysteemopdrachten bevatten, zoals hieronder:


#script containing standard system commands
cd /home/$USER
mkdir tmp
echo "tmp directory created under /home/$USER"

Maak het eenvoudigweg uitvoerbaar en voer het als volgt uit:


chmod +x  script_name
./script_name 

Methoden voor het inschakelen van de foutopsporingsmodus voor shell-scripts

Hieronder staan de primaire foutopsporingsopties voor shellscripts:

  1. -n (afkorting van noexec of no ecxecution) – instrueert de shell alle opdrachten te lezen, maar voert ze niet uit. Deze optie activeert de syntaxiscontrolemodus.
  2. -x (afkorting van xtrace of executietrace) – vertelt de shell om alle opdrachten en hun argumenten op de terminal weer te geven terwijl ze worden uitgevoerd. Met deze optie wordt de shell-traceringsmodus ingeschakeld.

1. De eerste regel van een shellscript wijzigen

Het eerste mechanisme is door de eerste regel van een shellscript te wijzigen, zoals hieronder, dit maakt het debuggen van het hele script mogelijk.

#!/bin/sh option(s)

In het bovenstaande formulier kan de optie een of een combinatie van de bovenstaande foutopsporingsopties zijn.

2. Shell aanroepen met foutopsporingsopties

De tweede is door de shell als volgt aan te roepen met foutopsporingsopties. Deze methode schakelt ook het debuggen van het hele script in.

shell option(s) script_name argument1 ... argumentN

Bijvoorbeeld:

/bin/bash option(s) script_name argument1 ... argumentN   

3. Gebruik het ingebouwde Shell-commando

De derde methode is het gebruik van de ingebouwde opdracht set om fouten op te sporen in een bepaalde sectie van een shellscript, zoals een functie. Dit mechanisme is belangrijk, omdat het ons in staat stelt foutopsporing in elk segment van een shellscript te activeren.

We kunnen de foutopsporingsmodus inschakelen met de opdracht set in het onderstaande formulier, waarbij optie een van de foutopsporingsopties is.

set option 

Om de foutopsporingsmodus in te schakelen, gebruikt u:

set -option

Om de foutopsporingsmodus uit te schakelen, gebruikt u:

set +option

Als we bovendien verschillende foutopsporingsmodi in verschillende segmenten van een shellscript hebben ingeschakeld, kunnen we ze allemaal tegelijk uitschakelen, zoals:

set -

Dat is het voor nu met het inschakelen van de foutopsporingsmodus voor shell-scripts. Zoals we hebben gezien, kunnen we fouten opsporen in een heel shellscript of in een bepaald gedeelte van een script.

In de volgende twee afleveringen van deze serie bespreken we hoe je de debugging-opties van het shell-script kunt gebruiken om uitgebreide uitleg te geven, syntaxiscontrole en debuggen van shell-tracing modi met voorbeelden.

Belangrijk is dat u niet vergeet om eventuele vragen over deze handleiding te stellen of ons feedback te geven via het commentaargedeelte hieronder. Blijf tot die tijd verbonden met Tecmint.