子shell 中的命令执行方法有区别吗?

子shell 中的命令执行方法有区别吗?

$(...)我想知道通过或调用子 shell 是否存在显著差异`...`

例如:

a=$(ls -la /tmp | grep vox-*)

和:

a=`ls -la /tmp | grep vox-*`

结果将完全相同,但我想知道为什么有两种不同的方法,有什么区别,以及我应该使用哪一种。

答案1

Backsticks 和$(...)功能上是相同的。但我更喜欢第二种方法

  • $(...)可以轻松嵌套

  • 可读性,$(...)更“bashish”

  • 一致性,作为类似的语法$((...)),适用于表达式

也可以看看这一页还有其他论点。

相关内容