使用tput和make命令

3

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

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

作为您的shell命令,它会在您的终端窗口中输出一行漂亮的线。
我想知道是否有办法在makefile中实现这一点?以下代码只会产生一个空行:
lineTest:
    @echo $$( printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' – )

无疑,这是一个愚蠢的问题,但如果你恰好知道答案,请不要犹豫地回复。

你使用的是哪个 Shell? - Tripp Kinetics
我目前使用 Z shell。 - Audun Olsen
1个回答

4

要通过make命令的所有$符号都需要进行转义,而你只转义了第一个。此外,我不知道为什么你要在子shell中调用printf然后再回显结果...??

对我来说,以下方式能够正常工作:

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

我应该指出的是,如果你启用并行构建来调用make,则这种方法不可靠,因为在并行模式下,不是所有作业都能访问终端。


在Makefile文件中,我会这样定义列数:# 定义终端信息 COLUMNS := $(shell tput cols) - MERM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接