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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |