特定の順序でデバッグ

特定の順序でデバッグ

デバッグモードを有効にしたいファイルを自動的に指定したいと思います。

# Define files needing debugging
files_to_debug=(
  "${trkrc}/navaid.rc"
  "${trkrc}/buranex.rc"
)

# Enable debugging for specific file sources
for file in "${files_to_debug[@]}"; do
  set -xv
  source "$file"
  set +xv
done

# Continue sourcing other files without debugging
source "${trkrc}/marinex.rc"
source "${trkrc}/firefly.rc"
source "${trkrc}/comseq.rc"
source "${trkrc}/comint.rc"

しかし、私のファイルを特定の順序でインポートしたいと思います。

  source "${trkrc}/marinex.rc"
  source "${trkrc}/firefly.rc"
  source "${trkrc}/navaid.rc"
  source "${trkrc}/buranex.rc"

  source "${trkrc}/comseq.rc"
  source "${trkrc}/comint.rc"

良い可能性がある可能性の1つは、数値を各ファイルに関連付けて「ソースコマンド」の前後に適用し1、発生した場合にのみソースを提供することです。set -xvset +xv0

このスクリプトは次のdebug-configファイルを生成できます。

0 marinex.rc
0 firefly.rc
0 navaid.rc
0 buranex.rc
    
0 comseq.rc
0 comint.rc

その後、ユーザーはデバッグしたいファイルの値をからに変更できます01

これを実装するのを手伝ってくれてありがとう。

答え1

次の機能を作成できます。

d() { set -xv; }
nd() { set +xv; }

その後、それぞれ前または電話してくださいdndsource

nd; source "${trkrc}/marinex.rc"
nd; source "${trkrc}/firefly.rc"
 d; source "${trkrc}/navaid.rc"
 d; source "${trkrc}/buranex.rc"
nd; source "${trkrc}/comseq.rc"
nd; source "${trkrc}/comint.rc"
nd

これは配列内のものとまったく一致しませんが、ファイル名が重複するのを防ぎます。

もちろん、組み合わせ機能を作成することもできます。

dsource() {
    set -xv
    source "$1"
    set +xv
}

ただし、関数の内部からそれをインポートすると、ソースコードの意味が変わる可能性があります。 (declare関数内では少なくともローカル変数が生成され、それを変更してdeclare -gグローバル変数を生成する必要があります。)

関連情報