将 tput 与 make 一起使用

Using tput with make

我希望使用 tput 对 makefile 的输出进行一些格式化。一个例子:如果你简单地输入

echo $(printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' –)

作为您 shell 中的命令,它将输出一条横跨终端整个宽度的漂亮线条 window。

我想知道是否有任何方法可以将其保留在 makefile 中?以下仅产生一个空行:

lineTest:
    @echo $$( printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' – )

绝对是个愚蠢的问题,但如果您碰巧知道,请插话。

您必须转义要传递的所有 $。你只逃过了第一个。我也不知道你为什么要在子 shell 中调用 printf 然后回显结果...??

这对我有用:

lineTest:
        @printf '%*s\n' "$${COLUMNS:-$$(tput cols)}" '' | tr ' ' -

我应该指出,如果您在启用并行构建的情况下调用 make,这将无法可靠地工作,因为在并行模式下,并非所有作业都可以访问终端。