Sådan aktiveres Shell Script-fejlretningstilstand i Linux


Et script er simpelthen en liste over kommandoer, der er gemt i en fil. I stedet for at køre en sekvens af kommandoer ved at skrive dem en efter en hele tiden på terminalen, kan en systembruger gemme dem alle (kommandoer) i en fil og gentagne gange påkalder filen for at udføre kommandoerne flere gange.

Mens vi lærer scripting eller i de tidlige stadier af at skrive scripts, starter vi normalt med at skrive små eller korte scripts med et par linjer med kommandoer. Og vi fejler normalt sådanne scripts ved ikke at gøre andet end at se på deres output og sikre, at de fungerer, som vi havde til hensigt.

Når vi begynder at skrive meget lange og avancerede scripts med tusindvis af kommandolinjer, for eksempel scripts, der ændrer systemindstillinger, udfører kritiske sikkerhedskopier over netværk og mange flere, vil vi indse, at kun at se på output af et script ikke er nok til at finde fejl i et script.

Derfor vil vi i denne shell-fejlfinding i Linux-serier gå igennem, hvordan du aktiverer fejlretning af shell-script, gå over for at forklare de forskellige fejlfindingsmetoder i shell-script, og hvordan man bruger dem i den efterfølgende serie.

Sådan starter du et script

Et script skelnes fra andre filer ved sin første linje, der indeholder en #! (She-bang - definerer filtypen) og et stienavn (sti til tolk), der informerer systemet om, at filen er en samling af kommandoer, der vil blive fortolket af det angivne program (tolk).

Nedenfor er eksempler på de "første linjer" i forskellige scripttyper:

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

Bemærk: Den første linje eller #! kan udelades, hvis et script kun indeholder et sæt standard systemkommandoer uden nogen interne shell-direktiver.

Sådan udføres et shell-script i Linux

Den konventionelle syntaks til påberåbning af et shell-script er:

$ script_name  argument1 ... argumentN

En anden mulig form er ved tydeligt at specificere skallen, der udfører scriptet som nedenfor:

$ shell script_name argument1 ... argumentN  

For eksempel:

$ /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]

For scripts, der ikke har #! som første linje og kun indeholder grundlæggende systemkommandoer som den nedenfor:

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

Gør det blot eksekverbart og kør det som følger:

$ chmod +x  script_name
$ ./script_name 

Metoder til aktivering af fejlretningstilstand i Shell Script

Nedenfor er de primære fejlfindingsindstillinger for shell-script:

  1. -v (forkortelse for verbose) - beder skallen om at vise alle linjer i et script, mens de læses, det aktiverer den detaljerede tilstand.
  2. -n (forkortelse for noexec eller ingen ecxecution) - instruerer skallen i at læse alle kommandoer, men udfører dem ikke. Denne indstilling aktiverer kontroltilstand for syntaks.
  3. -x (forkortelse for xtrace eller eksekveringssporing) - fortæller skallen at vise alle kommandoer og deres argumenter på terminalen, mens de udføres. Denne mulighed aktiverer shell-sporingstilstand.

Den første mekanisme er ved at ændre den første linje i et shell-script som nedenfor, dette vil muliggøre debugging af hele scriptet.

#!/bin/sh option(s)

I ovenstående form kan indstillingen være en eller en kombination af ovenstående fejlfindingsmuligheder.

Det andet er ved at påkalde skallen med fejlretningsindstillinger som følger, denne metode vil også tænde for fejlretning af hele scriptet.

$ shell option(s) script_name argument1 ... argumentN

For eksempel:

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

Den tredje metode er ved hjælp af den indbyggede indstillede kommando til at debugge et givet afsnit af et shell-script, såsom en funktion. Denne mekanisme er vigtig, da den giver os mulighed for at aktivere fejlfinding i ethvert segment af et shell-script.

Vi kan aktivere fejlretningstilstand ved hjælp af indstillet kommando i nedenstående form, hvor valgmuligheden er en af fejlretningsindstillingerne.

$ set option 

For at aktivere fejlretningstilstand skal du bruge:

$ set -option

For at deaktivere fejlretningstilstand skal du bruge:

$ set +option

Derudover, hvis vi har aktiveret flere fejlretningstilstande i forskellige segmenter af et shell-script, kan vi deaktivere dem alle på én gang sådan:

$ set -

Det er det for nu med aktivering af fejlfindingstilstand i shell-script. Som vi har set, kan vi enten fejle et helt shell-script eller et bestemt afsnit af et script.

I de næste to episoder af denne serie vil vi dække, hvordan man bruger fejlfindingsindstillingerne for shell-script til at forklare detaljerede, syntaks-kontrol og shell-sporing debugging-tilstande med eksempler.

Det er vigtigt, at du ikke glemmer at stille spørgsmål om denne vejledning eller måske give os feedback gennem kommentarfeltet nedenfor. Indtil da skal du forblive forbundet med Tecmint.