bash -xv(シェルスクリプトのデバッグオプション)が便利
シェルスクリプトのデバッグしたいなーってとき、
今まではロギング関数自作してチマチマやってたんだけど...
便利なオプション教えてもらった\(^o^)/✨
シェルスクリプトサンプル
標準出力に文字列を表示する、lsコマンドでエラーを起こす、な単純な動作のもの。 今回はこれを例とする。
$ cat debugTest.sh #!bin/bash echo "start" # 存在しないファイルに対してコマンド実行(エラーになる) ls hogefugapiyo echo $? echo "end"
bash実行(オプションなし)
普通にエラー起きて終了ステータスが表示されてる。普通だね。
$ bash debugTest.sh start ls: cannot access hogefugapiyo: No such file or directory 2 end
bash実行(-xオプションのみ)
-xオプションとは「単純なコマンドをそれぞれ展開した後、 PS4を展開した値を表示し、その後にそのコマンドと展開した引き数を表示するオプション」とのこと。
たしかになってるわ。
$ bash -x debugTest.sh + echo start start + ls hogefugapiyo ls: cannot access hogefugapiyo: No such file or directory + echo 2 2 + echo end end
bash実行(-vオプションのみ)
-vオプションは、「シェルの入力行を読み込んだ際に表示する」もの。
どっちがソースでどっちが実行結果なのか、ちょっとだけわかりづらい。
$ bash -v debugTest.sh #!bin/bash echo "start" start # 存在しないファイルに対してコマンド実行(エラーになる) ls hogefugapiyo ls: cannot access hogefugapiyo: No such file or directory echo $? 2 echo "end" end
bash実行(-xvオプション)
組み合わせて-xvオプション。
いいね。展開前の変数も、結果も表示されるから過不足ない!
$ bash -xv debugTest.sh #!bin/bash echo "start" + echo start start # 存在しないファイルに対してコマンド実行(エラーになる) ls hogefugapiyo + ls hogefugapiyo ls: cannot access hogefugapiyo: No such file or directory echo $? + echo 2 2 echo "end" + echo end end
bashのオプションって、なんか知らんけど思いつきもしなかった、、、
これからめちゃ使お!!!\(^o^)/
bash - コマンド (プログラム) の説明 - Linux コマンド集 一覧表
bash -xv https://t.co/VqP2dbWzTS
— 葵@おっさん系エンジニア (@aoi_engineering) 2020年1月29日
で動かすンゴ😌