Linuxでシェルスクリプトデバッグモードを有効にする方法


スクリプトは、ファイルに保存されているコマンドのリストです。システムユーザーは、ターミナルでコマンドを1つずつ入力して一連のコマンドを実行する代わりに、すべてのコマンド(コマンド)をファイルに保存し、ファイルを繰り返し呼び出してコマンドを数回再実行できます。

スクリプトを学習しているとき、またはスクリプトを作成する初期段階では、通常、数行のコマンドを使用して小さなスクリプトまたは短いスクリプトを作成することから始めます。そして、私たちは通常、その出力を見て、意図したとおりに機能することを確認するだけで、そのようなスクリプトをデバッグします。

ただし、システム設定を変更したり、ネットワークを介して重要なバックアップを実行したりするスクリプトなど、数千行のコマンドを使用して非常に長く高度なスクリプトを書き始めると、スクリプトの出力を確認するだけでは不十分であることがわかります。スクリプト内のバグを見つけるのに十分です。

したがって、Linuxシリーズでのこのシェルスクリプトのデバッグでは、シェルスクリプトのデバッグを有効にする方法を説明し、さまざまなシェルスクリプトのデバッグモードと、後続のシリーズでそれらを使用する方法について説明します。

スクリプトを開始する方法

スクリプトは、最初の行で他のファイルと区別されます。この行には、#!(She-bang –ファイルタイプを定義)と、ファイルがシステムに通知するパス名(インタープリターへのパス)が含まれています。指定されたプログラム(インタープリター)によって解釈されるコマンドのコレクションです。

以下は、さまざまなタイプのスクリプトの「最初の行」の例です。

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

注:スクリプトに標準のシステムコマンドのセットのみが含まれ、内部シェルディレクティブが含まれていない場合は、最初の行または#!を省略できます。

Linuxでシェルスクリプトを実行する方法

シェルスクリプトを呼び出すための従来の構文は次のとおりです。

$ script_name  argument1 ... argumentN

もう1つの可能な形式は、スクリプトを実行するシェルを次のように明確に指定することです。

$ shell script_name argument1 ... argumentN  

例えば:

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

最初の行に#!がなく、次のような基本的なシステムコマンドのみが含まれているスクリプトの場合:

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

実行可能にして、次のように実行するだけです。

$ chmod +x  script_name
$ ./script_name 

シェルスクリプトデバッグモードを有効にする方法

以下は、主要なシェルスクリプトのデバッグオプションです。

  1. -v (short for verbose) – tells the shell to show all lines in a script while they are read, it activates verbose mode.
  2. -n (short for noexec or no ecxecution) – instructs the shell read all the commands, however doesn’t execute them. This options activates syntax checking mode.
  3. -x (short for xtrace or execution trace) – tells the shell to display all commands and their arguments on the terminal while they are executed. This option enables shell tracing mode.

最初のメカニズムは、シェルスクリプトの最初の行を以下のように変更することです。これにより、スクリプト全体のデバッグが可能になります。

#!/bin/sh option(s)

上記の形式では、オプションは上記のデバッグオプションの1つまたは組み合わせにすることができます。

2つ目は、次のようにデバッグオプションを使用してシェルを呼び出すことです。このメソッドは、スクリプト全体のデバッグもオンにします。

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

例えば:

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

3番目の方法は、set組み込みコマンドを使用して、関数などのシェルスクリプトの特定のセクションをデバッグすることです。このメカニズムは、シェルスクリプトの任意のセグメントでデバッグをアクティブ化できるため、重要です。

以下のフォームのsetコマンドを使用してデバッグモードをオンにできます。ここで、optionは任意のデバッグオプションです。

$ set option 

デバッグモードを有効にするには、次を使用します。

$ set -option

デバッグモードを無効にするには、次を使用します。

$ set +option

さらに、シェルスクリプトのさまざまなセグメントで複数のデバッグモードを有効にしている場合は、次のようにすべてを一度に無効にすることができます。

$ set -

シェルスクリプトのデバッグモードを有効にすると、今のところ以上です。これまで見てきたように、シェルスクリプト全体またはスクリプトの特定のセクションをデバッグできます。

このシリーズの次の2つのエピソードでは、シェルスクリプトのデバッグオプションを使用して、冗長、構文チェック、およびシェルトレースのデバッグモードを例を挙げて説明する方法について説明します。

重要なのは、このガイドについて質問することを忘れないでください。または、以下のコメントセクションからフィードバックを提供してください。それまでは、Tecmintとの接続を維持してください。