首页 > 程序开发 > 【Shell】echo不显示变量中的多个空格

【Shell】echo不显示变量中的多个空格

2011年1月27日 发表评论 阅读评论

Shell中echo变量时,变量中的多个空格只打印了一个,如下

sh-3.2$ tmp="a    b    d"
sh-3.2$ echo $tmp
a b d

解决办法是给变量加上双引号",如下

sh-3.2$ tmp="a    b    d"
sh-3.2$ echo "$tmp"
a    b    d

至于原因,需要了解shell的解析过程:

  1. 替换变量
  2. 执行命令
  3. 按IFS划分命令之后的参数,用""和''包围的部分作为命令的一个参数。

echo $tmp的执行过程为:

  1. 替换变量:echo a    b    d
  2. 执行命令:echo a    b    d
  3. 按IFS划分echo命令之后的参数a, b, d

所以打印出来就是a b d,多个空格只显示了一个。

观察一下代码也可知

sh-3.2$ tmp="a    b    d"
sh-3.2$ echo $tmp
a b d
sh-3.2$ echo a    b    c
a b c
sh-3.2$ echo "$tmp"
a    b    d
sh-3.2$ echo "a    b    c"
a    b    c

枫芸志原创文章,转载请注明来源并保留原文链接




本文链接:http://witmax.cn/shell-echo-spaces.html




分类: 程序开发 标签: 11,137次阅读
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量