输出shell变量时如何保留空格?

时间:2014-03-13 12:31:41

标签: string bash whitespace substitution

为了进行字符串匹配,我需要定义一个带前导空格的bash变量。 我需要从整数开始定义,例如:

jj=5

printf在我看来是个好主意,所以如果我想填充最多6个字符的空格:

jpat=`printf "  %6i"  $jj`

但是当我试图回忆变量时不幸的是:

echo $jpat

删除了前导空格,我只获得了$jj整数。

保留这些空间的任何解决方案?

(这相当于:v=' val'; echo $v$v。为什么输出中没有前导和多个空格?)

1 个答案:

答案 0 :(得分:5)

Use More Quotes! echo "$jpat"会做你想做的事。

您正在做的事情还有另一个问题:命令替换将删除尾随换行符。在您使用的printf命令中,这不是问题,但是例如分配jpat=$(printf " %6i\n" "$jj")会给您与命令完全相同的结果。