Bash 스크립트 실행 파일 설명자가 "찾을 수 없음"을 반환합니다.

Bash 스크립트 실행 파일 설명자가 "찾을 수 없음"을 반환합니다.

모든 디버그 출력을 로그 파일로 설정하고 싶습니다. 그래서 확인해 봤어명령줄 - 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

관련 정보