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
別の可能な形式は、以下のようにスクリプトを実行するシェルを明確に指定することです。
$ 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
シェルスクリプトデバッグモードを有効にする方法
以下は主なシェル スクリプト デバッグ オプションです。
-v
(verbose の略) – スクリプトの読み取り中にすべての行を表示するようにシェルに指示し、verbose モードをアクティブにします。-n
(noexec または no ecxecution の略) – シェルにすべてのコマンドを読み取るように指示しますが、コマンドは実行しません。このオプションは構文チェック モードを有効にします。-x
(xtrace または実行トレースの略) – 実行中にすべてのコマンドとその引数を端末上に表示するようにシェルに指示します。このオプションにより、シェル トレース モードが有効になります。
1. シェルスクリプトの最初の行を変更する
最初のメカニズムは、シェル スクリプトの最初の行を以下のように変更することで、これによりスクリプト全体のデバッグが可能になります。
#!/bin/sh option(s)
上記のフォームでは、オプションは上記のデバッグ オプションの 1 つまたは組み合わせです。
2. デバッグ オプションを使用したシェルの呼び出し
2 つ目は、次のようにデバッグ オプションを指定してシェルを呼び出すことです。この方法でも、スクリプト全体のデバッグが有効になります。
$ shell option(s) script_name argument1 ... argumentN
例えば:
$ /bin/bash option(s) script_name argument1 ... argumentN
3. set シェル組み込みコマンドの使用
3 番目の方法は、set 組み込みコマンドを使用して、関数などのシェル スクリプトの特定のセクションをデバッグする方法です。このメカニズムは、シェル スクリプトの任意のセグメントでデバッグをアクティブ化できるため、重要です。
以下の形式でset コマンドを使用してデバッグ モードをオンにできます。ここで、option はデバッグ オプションのいずれかです。
$ set option
デバッグ モードを有効にするには、次を使用します。
$ set -option
デバッグ モードを無効にするには、次を使用します。
$ set +option
さらに、シェル スクリプトの異なるセグメントで複数のデバッグ モードを有効にしている場合は、次のようにすべてを一度に無効にすることができます。
$ set -
シェル スクリプト デバッグ モードの有効化はこれで終わりです。これまで見てきたように、シェル スクリプト全体をデバッグすることも、スクリプトの特定のセクションをデバッグすることもできます。
このシリーズの次の 2 つのエピソードでは、シェル スクリプト デバッグ オプションを使用して詳細説明、構文チェック、およびシェル トレース デバッグを行う方法について説明します。 > モードと例。
重要なのは、このガイドに関するご質問がある場合は、下のコメント セクションを通じてフィードバックをお寄せいただくことを忘れないでください。それまでは Tecmint に接続したままにしてください。