我希望使用tput对makefile中的输出进行一些格式化。例如:如果您只需输入
echo $(printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' –)
作为shell中的命令,它将输出一个跨越终端窗口整个宽度的漂亮线。
我想知道是否有任何方法可以在makefile中进行此操作?以下仅产生一个空行:
lineTest:
@echo $$( printf '%*s' "${COLUMNS:-$(tput cols)}" '' | tr ' ' – )
绝对是一个愚蠢的问题,但如果你碰巧知道的话请发信息。
答案 0 :(得分:3)
您必须转义要传递的所有$
。你只逃过了第一个。另外我不知道为什么你在子shell中调用printf然后回显结果...... ??
这对我有用:
lineTest:
@printf '%*s\n' "$${COLUMNS:-$$(tput cols)}" '' | tr ' ' -
我应该指出,如果你在启用并行构建的情况下调用make,这将无法可靠地工作,因为在并行模式下,并非所有作业都可以访问终端。