为什么要回复一个反引号?

时间:2016-03-16 15:04:56

标签: bash backticks

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

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

它与运行命令之间的区别是什么?

#!/bin/bash
/path/command argument

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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