質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

3回答

20078閲覧

shellのデバッグ方法

yokohama3

総合スコア105

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

3クリップ

投稿2014/08/12 06:25

linuxでbashスクリプトのデバッグをしたいですが、
何かいい方法はありませんか?
(出来ればステップ実行したいです)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

bashにはDEBUGというコマンドが実行される毎に発するシグナルがあるので、
trapでDEBUGシグナルを補足すれば1行毎に処理を挟めます。
そこでreadコマンド(-pオプション)でBASH_COMMANDを表示させればポチる毎にコマンドを表示しながら処理を進められます。
trap 'read -p "$BASH_COMMAND"' DEBUG

なのでこんな感じのコマンドを冒頭に突っ込めばステップ実行ができます。

まぁちゃんとしたデバッグじゃないんで「bash -x」みたいに変数の中身を出したりはしてくれませんが。

投稿2014/08/12 12:56

kinme

総合スコア843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokohama3

2014/08/18 02:24

試してみようと思います!回答ありがとうございました!
guest

0

ベストアンサー

あまり詳しくなくてすみません。

shでも使える-xオプションは、行ごとにコマンド内容が変数が展開された状態で表示されます。

bashだと-vオプションというのもあります。

下記リンクのページに他にもいくつか例が載っていますので参考にしてください。

シェルスクリプトのデバッグ - UNIX & Linux コマンド・シェルスクリプト リファレンス

使い方をちょっとだけ書いておきます。

test.shなら
$ sh -x test.sh $ bash -x test.sh
ファイルの先頭行(shebang)に記載してもOKです。
#!/bin/sh -x
これなら、./で実行できます。
でも、前者のほうが、スクリプトを書き換えないで済むのでおすすめです。

投稿2014/08/12 10:26

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokohama3

2014/08/18 02:23

試してみようと思います!ありがとうございました!
guest

0

私も通常はtrap使いますね。
http://oss-lab.net/?p=730

投稿2014/08/12 14:02

osamuya

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問