gnu make - 确定标准输出是否为终端

dim*_*mba 5 linux bash shell makefile

尝试做:

help:
    @echo "you must $(call red_text,clean)"
Run Code Online (Sandbox Code Playgroud)

其中 red_text 定义为

red_text = $(shell tput setaf 1; echo -n "$1"; tput sgr0)
Run Code Online (Sandbox Code Playgroud)

这将打印“you Must clean”,其中“clean”一词以红色打印。

问题是当 make 的输出通过管道传送时(例如传送到 less)。在这种情况下,我不应该使用颜色,而应该打印 1 美元。

我需要更新red_text来处理这个案子。为此,我认为我可以使用类似的东西$(shell [ -t 1 ] ..),但问题是标准输出从来$(shell)都不是终端。

当标准输出不是终端时,如何更改red以处理这种情况?