모든 디버그 출력을 로그 파일로 설정하고 싶습니다. 그래서 확인해 봤어명령줄 - bash: 파일에 -x 로그 설정 Ask Ubuntu그리고 지시를 따르세요.
테스트 스크립트:
#!/bin/bash
exec 5 >/var/log/test.log
export BASH_XTRACEFD=5
main(){
set -x
echo hello
set +x
}
main
달리기:
./test-script
반품:
exec: 5: not found
매뉴얼에는 이 작업도 수행할 수 있다고 나와 있는데 왜 위의 방법이 작동하지 않습니까?
답변1
5
줄 사이와 줄 사이에는 >
공백이 있어서는 안 됩니다 exec
.
공백을 사용하면 스크립트가 이름이 지정된 명령을 실행하려고 시도하므로 5
"찾을 수 없음" 메시지가 표시됩니다.
공백이 없으면 출력을 위해 주어진 파일 이름에 파일 설명자 5가 추가됩니다.
또한 변수를 내보낼 필요가 없으며 BASH_XTRACEFD
설정만 하면 충분합니다.
#!/bin/bash
exec 5>test.log
BASH_XTRACEFD=5
main () {
set -x
echo hello
set +x
}
main
답변2
오류가 중간에 발생합니다.
실행: 5: 찾을 수 없음
exec
이름이 지정된 명령을 실행해 보았지만 5
찾을 수 없습니다.
이것파일 설명자를 리디렉션하기 위한 구문부르다공간 없음다음과 같이 파일 설명자 번호와 리디렉션 연산자 사이에:
exec 5> /var/log/test.log