Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么要回响回音?_Bash_Backticks - Fatal编程技术网

Bash 为什么要回响回音?

Bash 为什么要回响回音?,bash,backticks,Bash,Backticks,我“继承”了项目中的一些代码,在其中一个Bash脚本中,它们在backticks行上使用echo,如: #!/bin/bash echo `/path/command argument` 这和仅仅运行命令本身有什么区别 #!/bin/bash /path/command argument 两者都将命令的输出发送到脚本的标准输出 那么有什么区别呢?为什么要使用回声 将其与>结合使用似乎更糟糕: #!/bin/bash echo `/path/command argument > /var

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

#!/bin/bash
echo `/path/command argument`
这和仅仅运行命令本身有什么区别

#!/bin/bash
/path/command argument
两者都将命令的输出发送到脚本的标准输出

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

将其与
>
结合使用似乎更糟糕:

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

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

$ echo "a   b c"
a   b c
$ echo `echo "a   b c"`
a b c
请注意,这适用于所有类型的空格,如制表符和换行符


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

它还将换行符更改为空格。是的,可以是关于空格的内容,将
echo“a”| grep“b
放在echo bacticks中会产生一个空行,而不是零行,然后将
echo-e”放在hi\nhi中“
在echo bacticks中,行是一行而不是两行,这是一种常见的、成熟的反模式。如果程序员是故意这样做的,我希望有一条评论来解释这不是常见的反模式。