加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – printf中的填充字符

发布时间:2020-12-15 16:45:05 所属栏目:安全 来源:网络整理
导读:我编写一个bash shell脚本来显示进程是否正在运行。 到目前为止,我在这里。 printf "%-50s %sn" $PROC_NAME [UP] 这给了我一个输出: JBoss [DOWN]GlassFish [UP]verylongprocessname [UP] 我想用’ – ‘或’*’填充两个字段之间的差距,使其更易读。我怎
我编写一个bash shell脚本来显示进程是否正在运行。

到目前为止,我在这里。

printf "%-50s %sn" $PROC_NAME [UP]

这给了我一个输出:

JBoss                                              [DOWN]

GlassFish                                          [UP]

verylongprocessname                                [UP]

我想用’ – ‘或’*’填充两个字段之间的差距,使其更易读。我怎么做,而不打扰字段的对齐?

我想要的输出是:

JBoss -------------------------------------------  [DOWN]

GlassFish ---------------------------------------  [UP]

verylongprocessname -----------------------------  [UP]
纯Bash,没有外部实用程序

这个演示完全证明,但你可以省略减去第二个字符串的长度,如果你想要粗糙的右边线。

pad=$(printf '%0.1s' "-"{1..60})
padlength=40
string2='bbbbbbb'
for string1 in a aa aaaa aaaaaaaa
do
     printf '%s' "$string1"
     printf '%*.*s' 0 $((padlength - ${#string1} - ${#string2} )) "$pad"
     printf '%sn' "$string2"
     string2=${string2:1}
done

不幸的是,焊盘串的长度必须硬编码,但是焊盘长度可以是如图所示的变量。

输出:

a--------------------------------bbbbbbb
aa--------------------------------bbbbbb
aaaa-------------------------------bbbbb
aaaaaaaa----------------------------bbbb

不减去第二个字符串的长度:

a---------------------------------------bbbbbbb
aa--------------------------------------bbbbbb
aaaa------------------------------------bbbbb
aaaaaaaa--------------------------------bbbb

第一行可以是等价的(类似于sprintf):

printf -v pad '%0.1s' "-"{1..60}

如果您愿意,可以在一行上打印:

printf '%s%*.*s%sn' "$string1" 0 $((padlength - ${#string1} - ${#string2} )) "$pad" "$string2"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读