linux - 未知可变长度的水平和垂直行间距

标签 linux bash sh width spacing

我正在尝试打印具有特定格式的输出,其中输出位于封闭的框中。 我正在使用“|”和“-”用于创建它。我在“|”之间打印的输出是具有不同字符数的变量。 这弄乱了我的格式。

我试过下面的代码

nodename=$(hostname)
cpu=$(cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l)
echo " ------------------------------------------------------------------"  
echo "|                                                                  |" 
echo "|          This is Bash Scripting                                  |" 
echo "|                                                                  |" 
echo "|  1 - This Machine Name is $nodename                              |" 
echo "|  2 - This Machine has $cpu CPU's                                 |"
echo "|                                                                  |" 
echo " -------------------------------------------------------------------" 

实际结果

" ------------------------------------------------------------------"  
"|                                                                  |" 
"|          This is Bash Scripting                                  |" 
"|                                                                  |" 
"|  1 - This Machine Name is test                              |" 
"|  2 - This Machine has 8 CPU's                                 |"
"|                                                                  |" 
" -------------------------------------------------------------------" 

预期结果

" ------------------------------------------------------------------"  
"|                                                                  |" 
"|          This is Bash Scripting                                  |" 
"|                                                                  |" 
"|  1 - This Machine Name is test                                   |" 
"|  2 - This Machine has 8 CPU's                                    |"
"|                                                                  |" 
" -------------------------------------------------------------------" 

最佳答案

使用printf代替echo:

printf "|  1 - This Machine Name is %-39s|\n" "$nodename"

您可以使用 %-39s 指定正确的空格填充

关于linux - 未知可变长度的水平和垂直行间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627132/

相关文章:

java - 如何在没有桌面环境的情况下从 Linux shell 运行 Java Swing 应用程序?

linux - Yocto Bitbake Glibc 构建失败

python - 删除所有包含字典中未包含单词的行

php - 使用 exec Laravel PHP 运行 .sh 文件

shell - 在.sh脚本中编辑html文件

C Yahtzee 模拟器在 Windows 中需要大量的滚动,而不是在 Linux 中

php - 在终端中安装 xdebug

bash - awk 排序多维数组

linux - 在 Crontab 中运行多个相互依赖的 sas 程序

linux - 如何从 shell 脚本中变量中存储的日期中减去年份?