한 번 풀었는데 어떻게 했는지 기억이 안 나네요!
내 자식 프로세스에는 다음이 있습니다.
echo -e "some control chars"
내 상위 프로세스에서는 터미널 스타일이 없는 일반 문자열이 표시됩니다. 상위 프로세스에 있는 하위 프로세스의 stdout/stderr에서 제어 문자를 해석하는 방법이 있습니까?
특히 상위 항목에 다음 bash 기능이 있습니다.
ql_cyan='\033[1;36m'
ql_no_color='\033[0m'
function ql_log_colors {
echo "sourcing quicklock.sh"
echo -e "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
echo "${ql_cyan}sourcing quicklock.sh${ql_no_color}";
}
export -f ql_log_colors
ql_log_colors
현재 쉘에서 실행 하면 색상이 표시됩니다!
그러나 ql_log_colors
하위 셸에서 호출하면 상위 셸에는 색상이 표시되지 않고 일반 문자열 "Purchasing Quicklock.sh"만 표시됩니다.
보시다시피 저는 echo 명령의 3가지 변형을 시도했고 자식에서 echo 문이 호출되면 모두 부모에서 일반 텍스트를 출력했습니다.