文本alignment中心 – shell脚本

我正在使用shell脚本创build一个简单的基于控制台的脚本。它将在我的bash shell上运行它基于简单的菜单驱动显示一些选项集。

现在我想根据屏幕大小来alignment文本。 如何alignment屏幕中心的文字?请帮助我

最后我找到了解决办法:)

COLUMNS=$(tput cols) title="Hello world!" printf "%*s\n" $(((${#title}+$COLUMNS)/2)) "$title" 

在基于BSD的系统(包括MacOS)上, fmt实用程序具有用于居中文本的-c标志。

 echo $text | fmt -c -w $COLUMNS 

不幸的是,GNU fmt有一个不兼容的-c标志,没有其他选择。

简单的Perl解决方案

 perl -pe '$sp = " " x (($ENV{COLUMNS} - length) / 2); s/^/$sp/'