3

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

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

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

我想知道是否有任何方法可以在生成文件中进行此操作?以下仅产生一个空行:

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

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

4

1 回答 1

4

你必须逃避所有$你想要传递的东西。你只逃脱了第一个。另外我不知道你为什么在子shell中调用 printf 然后回显结果......??

这对我有用:

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

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

于 2018-04-11T19:21:59.040 回答