debugging - How to debug a bash script? - Unix & Linux Stack Exchangeより
bash 4.1以上にて
スクリプトの先頭に次のように書いておく
# !/bin/bash
exec 5> debug_output.txt
BASH_XTRACEFD="5"
PS4='$LINENO: '
set -x
するとdebug_output.txtにログが出力される。
exec 5>はファイルディスクリプタ5番をdebug_output.txtにするという意味。
PS4はトレース出力の際に表示されるプロンプト。$LINENOにより行番号を表示している。
set -xは実行するコマンドをトレース出力させる。
元記事にはbashdb、log4bash、Eclipse、Visual Studioo Codeを使う方法なども紹介されているが、これが一番手軽でほとんどの場合十分だと思う。