hana_shinのLinux技術ブログ読者になるhana_shinのLinux技術ブログLinuxの技術情報を掲載しています。ネットワークをメインに掲載していきます。はじめにbashスクリプトのデバッグ方法についてまとめました。デバッグ方法は以下の2つがあります。スクリプト内にデバッグオプションを設定する方法(3章)bashコマンドの引数にデバッグオプションを指定する方法(4章)。この方法は、スクリプトにオプションを設定する必要がないため、スクリプトの中身を変更することなく、デバッグモードを有効にできる利点があります。検証環境AlmaLinux版数は以下のとおりです。Tiger)カーネル版数は以下のとおりです。-r4.18.0-372.9.1.el8.x86_64bashの版数は以下のとおりです。スクリプトが実行する処理を表示する方法(-x)"-x"は、スクリプトが実行する処理を表示するオプションです。このオプションは、スクリプトの1行目のシバンに設定します。'other'fiスクリプトを実行します。スクリプトが実行した処理が表示されます。+e)"-e"は、スクリプト実行中にエラーが発生した場合、実行を終了するオプションです。これにより、エラーが発生した場所を迅速に特定することができます。一方で、"+e"は停止する動作を無効にするオプションです。-e)2番目のlsコマンドが存在しないコマンドパスに対して実行するスクリプトを作成します。/usr/bin/dateスクリプトを実行します。2つ目のlsコマンド実行時にエラーが発生しましたが、スクリプトは最後まで実行されました。/usr/bin/dateスクリプトを実行します。2つ目のlsコマンドの実行時にエラーが発生し、そのためスクリプトが終了したことがわかります。+e)lsコマンドの前後に"-e"オプションと"+e"オプションを指定したスクリプトを作成します。/usr/bin/dateスクリプトを実行します。-e/+eオプションは、1つ目のlsコマンドまでの有効範囲に限られるため、2つ目のlsコマンドでエラーが発生しても、スクリプトは停止しません。変数未設定を検出する方法(-u)"-u"オプションを指定したスクリプトを作成します。このスクリプトは、変数に値が設定されていない場合に警告を表示します。例として、変数var1に値を設定し、一方で変数var2には値を設定しません。${var2}スクリプトを実行します。変数var1に設定した値のみが表示されていることがわかります。0)であることがわかります。$?0次に、"-u"オプションを設定したスクリプトを作成します。${var2}スクリプトを実行します。0以外)であることが確認できます。パイプ処理でエラーが発生したらパイプ処理全体でエラーにする方法(-u)スクリプト内で参照するためのテスト用ファイルを作成します。log.txt111パイプライン中のgrepコマンドは異常終了しますが、その後のsortコマンドが正常終了するテスト用のスクリプトを作成します。"-u"オプションは未設定とします。sortスクリプトを実行します。そのため、スクリプトの終了ステータスを確認すると、0であることがわかります。$?0次に、"-u"オプションを設定したスクリプトを作成します。sortスクリプトを実行します。./tp.shスクリプトの終了ステータスを確認すると、1であることがわかります。bashコマンドの引数にデバッグオプションを指定する方法スクリプトに設定したオプションは、bashコマンドの引数として使用することができます。"-x"オプションを使用すると、以下のようになりますテスト用のスクリプトを作成します。'other'fibashコマンドの引数として"-x"を指定すると、スクリプトの実行過程で実行されたコマンドが表示されるため、スクリプトの実行内容を確認することができます。デバッガを使う方法(bashdb)詳細は以下を参照してください。スクリプトの構文をチェックする方法(ShellCheck)詳細は以下を参照してください。私が業務や記事執筆で参考にした書籍を以下のページに記載します。)はてなブログをはじめよう!hana_shinさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。