按特定顺序进行调试

按特定顺序进行调试

我想自动指定我想要启用调试模式的文件。

# 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应用,并且仅在遇到时进行采购。set -xvset +xv0

该脚本可以生成以下debug-config文件

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

然后,用户可以将那些想要调试的文件的值从 更改0为。1

我将非常感谢您在实施这件事方面提供的帮助。

答案1

你可以制作类似的函数

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

然后在每个之前调用dor :ndsource

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创建全局变量。)

相关内容