我解决过一次,但我不记得我是怎么做的!
在我的子进程中,我有这个:
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
在当前的 shell 中运行,我会得到颜色!
但是,如果我ql_log_colors
从子 shell 调用,则父 shell 中不会显示任何颜色,只会显示纯字符串“采购 Quicklock.sh”。
如您所见,我尝试了 echo 命令的 3 种变体,如果从子级调用 echo 语句,则所有变体都仅在父级中输出纯文本。