代码之家  ›  专栏  ›  技术社区  ›  Puggan Se

为什么要回显反勾线?

  •  1
  • Puggan Se  · 技术社区  · 10 年前

    我“继承”了项目中的一些代码,在其中一个Bash脚本中,它们使用 echo 在反勾号行,如:

    #!/bin/bash
    echo `/path/command argument`
    

    这和仅仅运行命令本身有什么区别?

    #!/bin/bash
    /path/command argument
    

    两者都将命令的输出发送到脚本的stdout。

    那么有什么区别呢?为什么使用 回响 ?

    将其与 > 看起来更糟:

    #!/bin/bash
    echo `/path/command argument > /var/log/exemple.log`
    
    1 回复  |  直到 10 年前
        1
  •  2
  •   Tom Fenech    10 年前

    它在当前的形式中看起来不是特别有用,但使用的一个副作用是 echo 带(未加引号)反引号表示单词之间的空格丢失。这是因为单词拆分-命令输出中的每个单词都被视为单独的参数 回响 ,它只输出由单个空格分隔的数据。例如:

    $ echo "a   b c"
    a   b c
    $ echo `echo "a   b c"`
    a b c
    

    请注意,这适用于 全部的 空格类型,如制表符和换行符。

    我不知道你为什么要故意这么做!就我个人而言,我很想正常运行命令。

    推荐文章