我编写一个bash shell脚本来显示进程是否正在运行。
到目前为止,我在这里。
printf "%-50s %s\n" $PROC_NAME [UP]
这给了我一个输出:
JBoss [DOWN] GlassFish [UP] verylongprocessname [UP]
我想用’ – ‘或’*’填充两个字段之间的差距,使其更易读。我怎么做,而不打扰字段的对齐?
我想要的输出是:
JBoss ------------------------------------------- [DOWN] GlassFish --------------------------------------- [UP] verylongprocessname ----------------------------- [UP]
纯Bash,没有外部实用程序
原文链接:https://www.f2er.com/bash/392201.html这个演示完全证明,但你可以省略减去第二个字符串的长度,如果你想要粗糙的右边线。
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 '%s\n' "$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%s\n' "$string1" 0 $((padlength - ${#string1} - ${#string2} )) "$pad" "$string2"