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

标签 bash variables printing formatting printf

我在 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

关于bash - 如何在 bash 中打印一些文本并用空格填充到一定宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345429/

相关文章:

sql - SQL Server 中范围变量的范围

java - Hackerrank 说我的输出是错误的,即使输出完全匹配

css - 分页媒体@page :nth selector

c++ - 在管道中调用时从 std::cin 加载 pugi::xml_document 失败

linux - 跳过 "find"输出中的字符

bash - 使用 Festival 生成音频文件

css - 使用浏览器的 "Shrink to page width"打印

bash - 在 Azure Devops 中,如何在 "Azure CLI task v.2"运行的 shell 脚本中使用管道变量?

ruby-on-rails - 在 Ruby on Rails 中创建动态变量

python - 如何修复代码中的 'UnboundLocalError: local variable ' dc' 在分配之前引用'?