内联命令的bash

内联命令的bash,bash,command,Bash,Command,我必须在bash脚本中运行命令,在这个bash脚本中我必须运行其他命令。我在运行CentOS 我在博客和手册上找到了两种方法: 1) 使用记号或重音字符 command `sub command` 或 2) 使用美元符号和括号 command $(sub command) 2和哪一个更适合使用之间有什么区别?除了“可嵌套性”之外没有区别: $()是可嵌套的: $ echo $(echo "hi" $(echo "there")) 虽然``不是。$(…)和反勾号非常相似。两者之间的唯一区别是

我必须在bash脚本中运行命令,在这个bash脚本中我必须运行其他命令。我在运行CentOS

我在博客和手册上找到了两种方法:

1) 使用记号或重音字符

command `sub command`

2) 使用美元符号和括号

command $(sub command)

2和哪一个更适合使用之间有什么区别?

除了“可嵌套性”之外没有区别:

$()
是可嵌套的:

$ echo $(echo "hi" $(echo "there"))
虽然``不是。

$(…)
和反勾号非常相似。两者之间的唯一区别是,在某些细节中,哪些特殊字符被替换;这本书比我能更好地解释:

当使用旧式的反引号替换形式时,反斜杠保留其字面含义,后面跟$、`、或除外。第一个不带反斜杠的反引号终止命令替换。使用$(command)表单时,括号之间的所有字符组成命令;没有人受到特殊对待

例如,这使得嵌套
$(…)
更容易一些。不过,除此之外,没有什么区别。

引用:

  • $(…)形式的命令替换以与“…”不同的方式处理双反斜杠
  • $(…)形式的命令替换允许嵌套

  • 希望这有帮助

    >P>其他人指出了语法上的差异(基本上,<代码> $())/代码>是稍微干净的WRT嵌套和转义),但是没有人提到我认为更重要的区别:<代码> $()更容易阅读。它看起来不像单引号(这意味着完全不同的东西),并且开始和结束分隔符也不同,这使得它更容易直观地区分其内容

    对于您自己的脚本,这可能不是很关键;代码可读性很好,但功能更重要。但对于任何编写教程、示例代码、答案等的人来说,可读性更为重要。人们在键入示例等时会键入单引号而不是反引号,当它不能按预期工作时会感到困惑


    因此,对于编写stackoverflow示例的每个人来说:请为读者省去一些麻烦,并始终使用
    $()
    表单。

    从技术上讲,它可以嵌套,但必须为每个级别再次转义,因此是无法维护和丑陋的。