디버그 모드를 활성화하려는 파일을 자동으로 지정하고 싶습니다.
# 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 -xv
set +xv
0
이 스크립트는 다음 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
.nd
source
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
전역변수를 생성해야 합니다.)