echo在Bash变量中删除前导空格。

32 浏览
0 Comments

echo在Bash变量中删除前导空格。

作为一个初学者,我希望在bash中将一个变量的开头添加一个空格,目前我有以下代码,但似乎不起作用:

space=`printf '%1s' ' '`
mystr='hello'
mystr="$space$mystr"
echo $mystr

所以我希望打印出的结果是" hello",在开头多一个空格。请问正确的方法是什么?谢谢。

0
0 Comments

在Bash中,如果变量的值以空格开头,当使用echo命令打印该变量时,开头的空格会被自动去除。这是因为Bash会对变量进行单词拆分。为了禁用单词拆分,可以将变量用双引号括起来:

echo "$mystr"

这样,即使变量值以空格开头,echo命令也会将其原样输出。

问题的解决方法就是使用双引号将变量括起来,以禁用单词拆分。

相关链接:

- [I just assigned a variable, but echo $variable shows something else](https://stackoverflow.com/questions/29378566)

- [Word Splitting](http://mywiki.wooledge.org/WordSplitting)

- [Field Splitting](http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_05)

0