use*_*548 30 shell bash shell-script
我分配了一个这样的变量:
MYCUSTOMTAB=' '
Run Code Online (Sandbox Code Playgroud)
但是在 echo 中使用它:
echo $MYCUSTOMTAB"blah blah"
Run Code Online (Sandbox Code Playgroud)
或者
echo -e $MYCUSTOMTAB"blah blah"
Run Code Online (Sandbox Code Playgroud)
只返回一个空格和字符串的其余部分:
blah blah
Run Code Online (Sandbox Code Playgroud)
如何原封不动地打印完整的字符串?我想用它来自定义缩进,因为\t对我的口味来说太宽了。
cuo*_*glm 44
将您的变量放在双引号内以防止字段拆分,这会占用您的空间:
$ MYCUSTOMTAB=' '
$ echo "${MYCUSTOMTAB}blah blah"
blah blah
Run Code Online (Sandbox Code Playgroud)
tec*_*raf 11
正如这个答案中所建议的那样,引用变量就足够了。
在您的情况下需要引用的原因是因为没有它 bash 会将 split+glob 运算符应用于$MYCUSTOMTAB. 默认值$IFS包含制表符,所以echo -e $MYCUSTOMTAB"blah blah",$MYCUSTOMTAB仅仅是分裂成什么使它成为一样的,如果你写了:
echo -e "blah blah"
Run Code Online (Sandbox Code Playgroud)
(-e顺便说一句,您可能不想要这里)。
您还可以使用printf代替echo:
printf '%s\n' "$MYCUSTOMTAB"
printf '%s\n' "${MYCUSTOMTAB}blah blah"
Run Code Online (Sandbox Code Playgroud)
或者,如果您想做printf相同类型的\n,\t扩展echo -e,请使用%b代替%s:
printf '%b\n' "${MYCUSTOMTAB}blah blah"
Run Code Online (Sandbox Code Playgroud)
供参考阅读为什么 printf 比 echo 好?
| 归档时间: |
|
| 查看次数: |
160481 次 |
| 最近记录: |