printf意外的填充行为

时间:2017-06-12 01:02:20

标签: bash formatting

我尝试使用herehere列出的printf建议,将空格填充到bash中的一系列字符串上。

迭代测试字符......

for i in a b c d e f g
do
  printf "%-7s" "$i"
done

...产生预期结果:

a      b      c      d      e      f      g

但迭代实际字符串会产生奇怪的结果:

for i in date sha percent total covered uncovered
do
  printf "%-7s" "$i"
done

date   sha    percenttotal  covereduncovered

为什么这两次迭代导致不同的间距?

2 个答案:

答案 0 :(得分:2)

填充仅添加空格以使总宽度达到7. percentcovered,但已经 7个字符,因此在任一字符串后都不需要填充

答案 1 :(得分:0)

这是你想要的吗?

$ for i in date sha percent total covered uncovered; do
>   printf "%-7s%-6s" "$i" ""
> done
date         sha          percent      total        covered      uncovered      $ 

(请注意,我的提示位于该字符串的末尾。)