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



    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


    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【Shell】echo不显示变量中的多个空格
    标签:
    分享:

已经有2 条评论抢在你前面了~

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