为什么回显反引号行?

Why echo a backticks-row?

我 "inherited" 项目中的一些代码,在其中一个 Bash 脚本中,他们在反引号行上使用 echo,例如:

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

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

#!/bin/bash
/path/command argument

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

那有什么区别呢?为什么要使用 echo

将它与 > 结合起来似乎更糟:

#!/bin/bash
echo `/path/command argument > /var/log/exemple.log`

它目前的形式看起来并不是特别有用,但是使用 echo 和(未加引号的)反引号的一个副作用是单词之间的白色 space 会丢失。这是因为单词拆分 - 命令输出中的每个单词都被视为 echo 的单独参数,它仅输出由单个 space 分隔的单词。例如:

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

请注意,这适用于所有 类型的白色space,例如制表符和换行符。

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