我分配了一个这样的变量:
MYCUSTOMTAB=' '
但在 echo 中使用它:
echo $MYCUSTOMTAB"blah blah"
或者
echo -e $MYCUSTOMTAB"blah blah"
只是返回一个单一空间以及字符串的其余部分:
blah blah
如何不加修改地打印完整字符串?我想用它来进行自定义缩进,因为\t
它太宽了,不适合我的口味。
答案1
将变量放在双引号内以防止场分裂, 哪个吃您的空间:
$ MYCUSTOMTAB=' '
$ echo "${MYCUSTOMTAB}blah blah"
blah blah
答案2
正如建议的这个答案引用变量就足够了。
在您的情况下需要引用的原因是因为如果没有它,bash 会将 split+glob 运算符应用于$MYCUSTOMTAB
.默认值$IFS
包含 TAB 字符,因此echo -e $MYCUSTOMTAB"blah blah"
,中$MYCUSTOMTAB
只是被拆分为任何内容,因此它变得与您编写的内容相同:
echo -e "blah blah"
(顺便说一句,你可能不想要-e
这里)。
您还可以使用printf
代替echo
:
printf '%s\n' "$MYCUSTOMTAB"
printf '%s\n' "${MYCUSTOMTAB}blah blah"
或者,如果您想做printf
同样类型的\n
,\t
扩展echo -e
,请使用%b
而不是%s
:
printf '%b\n' "${MYCUSTOMTAB}blah blah"
答案3
我认为你只需要为你的变量使用双引号
echo -e "$MYCUSTOMTAB"."blah blah"
答案4
我知道你的问题已被标记bash
,但无论如何,为了最大的可移植性和可靠性,我会使用:
printf "%sblah blah\n" "$MYCUSTOMTAB"
或者
someString="blah blah"
printf "%s%s\n" "$MYCUSTOMTAB" "$someString"