2016-09-20 2 views

답변

1

왜 이것이 문제입니까? 출력을 파일에 인쇄하면 쉘에서 완전히 허용됩니다. 거기에 무엇이 있는지보고 싶다면 파일에 cat -v 또는 hexdump과 같은 것을 사용하십시오.

1

나는 이것이 일어날 수 있음을 확인합니다. 이 문제를 해결하기위한 적절한 방법이 있는지 확실하지 않습니다,하지만 나는 부분적인 해결책 해킹 :

printenv -0 | 
    while IFS= read -r -d '' s; do 
     printf "declare -x %s=%q\n" "${s%%=*}" "${s#*=}" 
    done 

이는 것을 제외하고 제대로 것, export -p의 출력 거의 해당하는 출력을 생성한다을 변수의 값에서 모든 특수 문자를 이스케이프 처리합니다. 한 가지 문제는 printenvexport -p과 똑같은 변수 목록을 인쇄하지 않는다는 것입니다 (예 : export -p에는 $OLDPWD이 포함되지만 $_은 포함되지 않음). -0 옵션을 지원하기 때문에 printenv 만 사용합니다.

: 당신이 export myvar=$'\E[01;31mtest'을 한 후 내 스크립트를 실행하는 경우, 출력은 다음을 포함한다 :

declare -x myvar=$'\E[01;31mtest' 

당신이 빨간색으로 인쇄 라인을 많이 얻을 것이다 export -p를 입력하면 반면 (가정 당신의 터미널은 컬러를 지원함).

관련 문제