특정 순서로 디버깅

특정 순서로 디버깅

디버그 모드를 활성화하려는 파일을 자동으로 지정하고 싶습니다.

# 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; }

그런 다음 각각 전에 또는 전화하십시오 d.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전역변수를 생성해야 합니다.)

관련 정보