我有这个Makefile,它有一个名为"MODULES"的变量,它列出了我在构建中激活的所有模块.
这个列表用空格分隔,所以当我这样做时它看起来像这样echo $(MODULES):
module1 module2 module3 module4 mod5 mod6 mod7 module8 module9
Run Code Online (Sandbox Code Playgroud)
我想要做的是在编译时显示的某些列中显示此列表.
像这样:
Modules activated:
module1 module2 module3
module4 mod5 mod6
mod7 module8 module9
Run Code Online (Sandbox Code Playgroud)
理想情况下,列withs将调整为列中最大模块的宽度(请参阅参考资料mod7); 并且将根据当前终端的宽度调整列数.
现在,我发现了一些似乎这样做的unix实用程序,比如列,但我不能使它与我的set一起工作.
你有一些技巧可以让我这样做吗?
编辑:
在下面选择的答案中,我终于在我的Makefile中破解了这个命令:
@printf '%s\n' $(MODULES) | sort | column
Run Code Online (Sandbox Code Playgroud)
printf '%-12s%-12s%s\n' $modules
Run Code Online (Sandbox Code Playgroud)
这会占用变量的内容,占用占位符在格式字符串中出现的次数,并重复使用,直到消耗掉所有内容为止.
该column实用程序将自动为您生成列:
column <<< "$(printf '%s\n' $module)"
Run Code Online (Sandbox Code Playgroud)
这是第一列.如果你想要行优先:
column -x <<< "$(printf '%s\n' $module)"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |