bash - 如何在 bash 中打印一些文本并用空格填充到一定宽度?

我在 bash 脚本中回显一些文本,其中包含一个变量,并希望填充该变量,以便它始终在右侧有适当数量的空格以保持其余文本对齐。

这是我想要的一个例子:

Echoing random number 1080    [ OK ]
Echoing random number 443     [ OK ]
Echoing random number 34842   [ OK ]

数值的长度会不同(可能不超过 5 或 6 位)。

我知道 printf 可以做到这一点,并通过执行以下操作来右对齐变量:

printf "Echoing random number %5s   [ OK ]" $RAND_NUM

但是,这会像这样格式化文本:

Echoing random number  1080   [ OK ]
Echoing random number   443   [ OK ]
Echoing random number 34842   [ OK ]

当然,只是用空格呼应是行不通的:

echo "Echoing random number ${RAND_NUM}   [ OK ]"

产生这个:

Echoing random number 1080   [ OK ]
Echoing random number 443   [ OK ]
Echoing random number 34842   [ OK ]

有没有办法像我的第一个例子一样打印文本?

最佳答案

使用 - 左对齐字段。

printf "Echoing random number %-5s   [ OK ]" $RAND_NUM

或者,如果您使用的是 Red Hat Linux 系统,则有预定义的函数会打印出绿色 OK 和红色 FAILED 提示(您在启动期间看到的提示):

#!/bin/bash

. /etc/init.d/functions

echo -n "Frobbing widget:"
frob_widget && echo_success || echo_failure
echo

https://stackoverflow.com/questions/6345429/

相关文章:

perl - Perl 中的今天日期,格式为 MM/DD/YYYY

visual-studio-code - 如何格式化 Visual Studio Code 项目中的

.net - 如何使用缩写的时区显示 DateTime?

visual-studio - Razor Helper 语法自动格式化丑陋。怎么修?

ruby-on-rails - Rails(或 Ruby): Yes/No instead of T

php - 在 PHP 中获取货币符号

eclipse - 如何在 Eclipse 中禁用保存时自动格式化?

reporting-services - Reporting Services [SSRS] 表达式

c# - ToString ("N2") 和 ToString ("0.00") 之间的区别

sql-server - SSMS 结果到网格 - CRLF 未保留在复制/粘贴中 - 有更好的技术