为什么回显反引号行?
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,例如制表符和换行符。
我不知道你为什么要故意这样做!就个人而言,我很想正常地 运行 命令。
我 "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,例如制表符和换行符。
我不知道你为什么要故意这样做!就个人而言,我很想正常地 运行 命令。