为什么使用括号而不是反引号来“就地”执行命令?

为什么使用括号而不是反引号来“就地”执行命令?

我最近开始将我的 shell 脚本从使用反引号改为使用括号来执行命令就地并将结果用于其他用途。例如:

for line in `cat file`
do
    echo "$line"
done

现在我使用括号,替换如下:

for line in $(cat file)
...

这两种方法之间的实际区别是什么?为什么括号替换比反引号更好?

答案1

功能上没有区别,但是$()使嵌套更美观且更容易理解。考虑这个愚蠢的例子:

$ echo `echo \`echo \\\`echo foo\\\`\``
foo

对比

$ echo $(echo $(echo $(echo foo)))
foo

现在考虑使用一系列复杂的命令来做一些有用的事情;)。

相关内容