Shellデバッグ編

1587 ワード

構文のチェック
-nオプションは、スクリプトを実行せずに構文チェックのみを行います.
sh -n script_name.sh

デバッグの開始
sh -x script_name.sh

デバッグモードに入ると、Shellは読み込んだ文を順次実行し、生成された出力にはプラス記号が付き、持たないものがあり、以下のようになります.プラス記号は、この文がShellによって実行されたことを示します.プラス記号なしで文がShellによって生成された出力であることを示します.
+ array=(1 2 3 4 5)
+ for i in '${array[*]}'
+ echo 1
1

デバッグの中断
デバッグ中にCtrl+Zを押してデバッグを中断し、結果を観察し、fgキーを押してデバッグを続行すればよい.
デバッグブロック
上の-xオプションはスクリプト全体をデバッグします.スクリプトが大きいと不便です.コードをデバッグする方法もあります.次のようにします.
set -x
...
code block
...
set +x

これにより、set−xとset+xとの間のコードのみが追跡される.
デバッグ関数
set -x

Function call

set +x

よくあるエラーの診断
xxx.sh: cannot shift

このエラーは、パラメータが与えられていないか、パラメータの個数が少なくなったなど、パラメータの伝達に誤りがあるのが一般的です.shellスクリプトはshiftを使用して次のパラメータを取得するため、個数が間違っている場合、shiftコマンドは失敗します.
xxx.sh: ^M: not found

^MはWindows上のリターンバーrのUNIX上の表示形式です.この場合、Windowsでshellスクリプトを編集し、UNIX/Linuxで実行することが多いです.ファイル内のすべてのrを削除すればよい.
tr -d "\r" <oldfile.sh > newfile.sh

あるいはもっと標準的な方法で、rのASCIIコードは015なので、そうすることができます.
tr -d "\015" < oldfile.sh > newfile.sh

デバッグトラップの設定
後で続きます...
==