Wyszukiwanie w witrynie

Jak włączyć tryb debugowania skryptu powłoki w systemie Linux


Skrypt to po prostu lista poleceń przechowywanych w pliku. Zamiast uruchamiać sekwencję poleceń, wpisując je jedno po drugim na terminalu, użytkownik systemu może zapisać je wszystkie (polecenia) w pliku i wielokrotnie wywoływać plik, aby kilkakrotnie ponownie wykonać polecenia.

Ucząc się pisania skryptów lub na wczesnych etapach pisania skryptów, zwykle zaczynamy od napisania małych lub krótkich skryptów zawierających kilka linii poleceń. Zwykle debugujemy takie skrypty, nie robiąc nic więcej, jak tylko sprawdzamy ich dane wyjściowe i upewniamy się, że działają zgodnie z oczekiwaniami.

Jednak gdy zaczniemy pisać bardzo długie i zaawansowane skrypty zawierające tysiące linii poleceń, na przykład skrypty modyfikujące ustawienia systemu, wykonujące krytyczne kopie zapasowe w sieci i wiele innych, zdamy sobie sprawę, że samo patrzenie na dane wyjściowe skryptu nie jest wystarczy, aby znaleźć błędy w skrypcie.

Dlatego w tej serii debugowania skryptów powłoki w systemie Linux omówimy, jak włączyć debugowanie skryptów powłoki, przejdźmy do wyjaśnienia różnych trybów debugowania skryptów powłoki i sposobu ich używania w kolejnych seriach.

Jak rozpocząć skrypt

Skrypt różni się od innych plików pierwszą linią, która zawiera #! (She-bang – określa typ pliku) i nazwę ścieżki (ścieżka do interpretera) który informuje system, że plik jest zbiorem poleceń, które będą interpretowane przez określony program (interpreter).

Poniżej znajdują się przykłady „pierwszych linii” w różnych typach skryptów:

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

Uwaga: Pierwszą linię lub #! można pominąć, jeśli skrypt zawiera tylko zestaw standardowych poleceń systemowych, bez żadnych wewnętrznych dyrektywy powłoki.

Jak wykonać skrypt powłoki w systemie Linux

Konwencjonalna składnia wywoływania skryptu powłoki jest następująca:

script_name  argument1 ... argumentN

Inną możliwą formą jest wyraźne określenie powłoki, która wykona skrypt, jak poniżej:

shell script_name argument1 ... argumentN  

Na przykład:

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

Dla skryptów, które nie mają #! w pierwszej linii i zawierają jedynie podstawowe polecenia systemowe, takie jak to poniżej:


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

Po prostu nadaj mu charakter wykonywalny i uruchom go w następujący sposób:


chmod +x  script_name
./script_name 

Metody włączania trybu debugowania skryptu powłoki

Poniżej znajdują się podstawowe opcje debugowania skryptu powłoki:

  1. -n (skrót od noexec lub no ecxecution) – instruuje powłokę, aby przeczytała wszystkie polecenia, jednak ich nie wykonuje. Ta opcja aktywuje tryb sprawdzania składni.
  2. -x (skrót od xtrace lub śledzenia wykonania) – informuje powłokę, aby wyświetlała na terminalu wszystkie polecenia i ich argumenty podczas ich wykonywania. Ta opcja włącza tryb śledzenia powłoki.

1. Modyfikacja pierwszej linii skryptu powłoki

Pierwszy mechanizm polega na zmianie pierwszej linii skryptu powłoki, jak poniżej, co umożliwi debugowanie całego skryptu.

#!/bin/sh option(s)

W powyższym formularzu opcja może być jedną lub kombinacją powyższych opcji debugowania.

2. Wywoływanie powłoki z opcjami debugowania

Drugi polega na wywołaniu powłoki z opcjami debugowania w następujący sposób, ta metoda włączy również debugowanie całego skryptu.

shell option(s) script_name argument1 ... argumentN

Na przykład:

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

3. Korzystanie z wbudowanego polecenia Set Shell

Trzecia metoda polega na użyciu wbudowanego polecenia set w celu debugowania danej sekcji skryptu powłoki, takiej jak funkcja. Mechanizm ten jest ważny, ponieważ pozwala nam aktywować debugowanie w dowolnym segmencie skryptu powłoki.

Tryb debugowania możemy włączyć poleceniem set w formularzu poniżej, gdzie opcja oznacza dowolną opcję debugowania.

set option 

Aby włączyć tryb debugowania, użyj:

set -option

Aby wyłączyć tryb debugowania, użyj:

set +option

Ponadto, jeśli włączyliśmy kilka trybów debugowania w różnych segmentach skryptu powłoki, możemy wyłączyć je wszystkie na raz w następujący sposób:

set -

To wszystko na razie z włączeniem trybu debugowania skryptu powłoki. Jak widzieliśmy, możemy debugować cały skrypt powłoki lub określoną sekcję skryptu.

W kolejnych dwóch odcinkach tej serii omówimy, jak używać opcji debugowania skryptu powłoki w celu pełnego wyjaśnienia, sprawdzania składni i debugowania śledzenia powłoki tryby z przykładami.

Co ważne, nie zapomnij zadać nam żadnych pytań na temat tego przewodnika lub przekazać nam swoją opinię w sekcji komentarzy poniżej. Do tego czasu pozostań w kontakcie z Tecmint.