bashの完了をデバッグするにはどうすればよいですか?


14

私はすべてが単独で動作するように見えるいくつかのbash補完関数を作成しましたが、タブ補完をしようとすると予期しない結果が生じます。

bashdbに接続してから、タブで何かを完了し、デバッグして、何が問題なのかを判断することは可能ですか?


2
私をセントに追加するために:set -xin bashを使用してスクリプトをデバッグする必要があります。set +x無効にするために使用します。

回答:


6

set -x

set -xインタラクティブセッションまたはオートコンプリートスクリプト自体のいずれかを使用している場合、(ほぼ?)すべてのコマンドとその結果が出力されます。これには、オートコンプリートスクリプト内で行われる作業が含まれます。

その後、これをで再び静めることができset +xます。

-バツ

コマンド、ケースコマンド、選択コマンド、またはコマンドの算術演算の各単純なコマンドを展開した後、PS4の展開値を表示し、その後にコマンドとその展開引数または関連する単語リストを表示します。

-from バッシュマニュアル#このセットの組み込み


2

bash完了関数からのログ/出力のみ。ロケット科学ではない可能性が最も高いため、これはかなり簡単です。bashdbに接続することは可能かもしれませんが、不要だと感じています...


bashdbの接続は、スクリプトにログステートメントを追加するよりもはるかに簡単であり、私が予想したよりも迅速でした。しかし、それが可能かどうかはわかりませんが、答えがないことは不可能だと示唆しています。あなたが提案したように状態をファイルに記録することで問題を解決することができましたが、端末にログ情報を出力することは、補完で作業するときに役に立ちません。
ダンミッドウッド

3
@DanMidwood:2つの端末を使用します(画面+分割など)。1つは完了を実行し、2つ目tail -fはログを実行します。
チョロバ

@チョロバ:いいですね。:D
タマラWijsman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.