Wéi aktivéiert de Shell Script Debugging Mode am Linux


E Skript ass einfach eng Lëscht vu Kommandoen, déi an enger Datei gespäichert sinn. Amplaz eng Sequenz vu Kommandoen auszeféieren andeems se se een nom aneren déi ganzen Zäit um Terminal tippen, kann e System Benotzer se all (Kommandoen) an enger Datei späicheren an d'Datei ëmmer erëm opruffen fir d'Befehle e puer Mol erëm auszeféieren.

Wärend d'Skripten léieren oder an de fréie Stadien vu Skripte schreiwen, fänke mir normalerweis mat klengen oder kuerze Skripte mat e puer Zeilen Kommandoen un. A mir debuggen normalerweis sou Scripten andeems mir näischt méi maachen wéi hir Ausgab kucken an dofir suergen datt se funktionnéieren wéi mir geduecht hunn.

Wéi mir awer ufänken ganz laang a fortgeschratt Scripte mat Dausende vu Kommandozeilen ze schreiwen, zum Beispill Scripten déi Systemastellungen änneren, kritesch Backups iwwer Netzwierker ausféieren a vill méi, wäerte mir realiséieren datt nëmmen d'Output vun engem Skript kucken ass net genuch fir Bugs an engem Skript ze fannen.

Dofir, an dëser Shell Skript Debugging an der Linux Serie, wäerte mir duerchgoen wéi Dir Shell Skript Debugging aktivéiere kënnt, réckelen fir déi verschidde Shell Skript Debugging Modi z'erklären a wéi se se an der folgender Serie benotzen.

Wéi starten ech e Skript

E Skript gëtt vun anere Dateien duerch seng éischt Zeil ënnerscheet, déi e #! enthält (She-bang - definéiert den Dateityp) an e Weenumm (Wee zum Dolmetscher) deen de System informéiert datt d'Datei ass eng Sammlung vu Kommandoen déi vum spezifizéierte Programm (Interpreter) interpretéiert ginn.

Drënner sinn Beispiller vun den \éischt Zeilen\ a verschiddenen Typen vu Scripten:

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

Bemierkung: Déi éischt Zeil oder #! kann ausgelooss ginn wann e Skript nëmmen eng Rei vu Standardsystembefehl enthält, ouni intern Shell-Direktiven.

Wéi e Shell Skript a Linux auszeféieren

Déi konventionell Syntax fir e Shell-Skript opzeruffen ass:

$ script_name  argument1 ... argumentN

Eng aner méiglech Form ass duerch d'Schell kloer ze spezifizéieren déi de Skript ausféiert wéi hei ënnen:

$ shell script_name argument1 ... argumentN  

Zum Beispill:

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

Fir Scripten déi net #! als éischt Zeil hunn an nëmmen Basis Systembefehle wéi déi hei ënnen enthalen:

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

Maacht et einfach ausféierbar a lafen se wéi follegt:

$ chmod +x  script_name
$ ./script_name 

Methoden fir de Shell Script Debugging Modus z'aktivéieren

Drënner sinn déi primär Shell Skript Debugging Optiounen:

  1. -v (kuerz fir verbose) - seet der Shell all Zeilen an engem Skript ze weisen wärend se gelies ginn, et aktivéiert verbose Modus.
  2. -n (kuerz fir noexec oder keng ecxecution) - instruéiert d'Shell all d'Befehle liesen, awer féiert se net aus. Dës Optioun aktivéiert de Syntaxkontrollmodus.
  3. -x (kuerz fir xtrace oder execution trace) - erzielt der Shell all Kommandoen an hir Argumenter um Terminal ze weisen, während se ausgefouert ginn. Dës Optioun aktivéiert de Shell Tracing Modus.

Den éischte Mechanismus ass andeems Dir déi éischt Zeil vun engem Shell-Skript ännert wéi hei ënnendrënner, dëst wäert d'Debugging vum ganze Skript erméiglechen.

#!/bin/sh option(s)

An der Form uewendriwwer kann d'Optioun een oder eng Kombinatioun vun den Debuggingoptiounen hei uewen sinn.

Déi zweet ass andeems Dir d'Schuel mat Debuggingoptiounen oprufft wéi follegt, dës Method wäert och Debugging vum ganze Skript ausschalten.

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

Zum Beispill:

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

Déi drëtt Method ass andeems Dir de Set agebaute Kommando benotzt fir eng bestëmmte Sektioun vun engem Shell-Skript wéi eng Funktioun ze debuggen. Dëse Mechanismus ass wichteg, well et eis erlaabt Debugging an all Segment vun engem Shell-Skript z'aktivéieren.

Mir kënnen Debugging-Modus aktivéieren andeems Dir Set Kommando a Form hei drënner benotzt, wou d'Optioun eng vun den Debuggingoptiounen ass.

$ set option 

Fir Debugging Modus z'aktivéieren, benotzt:

$ set -option

Fir Debugging Modus auszeschalten, benotzt:

$ set +option

Ausserdeem, wa mir e puer Debugging-Modi a verschiddene Segmenter vun engem Shell-Skript aktivéiert hunn, kënne mir se all gläichzäiteg auszeschalten sou:

$ set -

Dat ass et fir de Moment mam Shell Skript Debugging Modus z'aktivéieren. Wéi mir gesinn hunn, kënne mir entweder e ganze Shell-Skript oder e bestëmmte Sektioun vun engem Skript debuggen.

An den nächsten zwee Episoden vun dëser Serie wäerte mir iwwerdecken wéi Dir d'Shell Skript Debugging Optiounen benotzt fir verbose, Syntaxprüfung a Shell Tracing Debugging Modi mat Beispiller z'erklären.

Wichteg ass, vergiesst net Froen iwwer dëse Guide ze stellen oder eis vläicht Feedback duerch d'Kommentarsektioun hei drënner ze ginn. Bis dohin, bleift verbonne mat Tecmint.