有什么理由使用或教导 `...` 替代新发展吗?

Mic*_*and 16 shell command-substitution

我的理解是,更现代的$(...)命令替换语法优于`基于旧的语法,因为嵌套和转义语法更容易且不易出错。

此外,似乎/bin/sh现代使用的大多数风格的 shell 都支持$(…)

  • 猛击
  • ash(因此是 BusyBox,也是大多数嵌入式 Linux)
  • 短跑
  • FreeBSD /bin/sh

并且$(…)是由 IEEE 1003.1 指定的。

所以我有两个非常相关的问题:

  • 除非您知道脚本需要在特定的旧系统上运行,否则是否有任何理由在 shell 脚本的新开发中使用 `?
  • 是否有任何理由不教 UNIX 编程学生只是编写$(...),并且`仅作为他们在阅读其他开发人员的 shell 脚本时可能会遇到的过时变体进行讨论(如果他们正在使用非常旧的系统或非标准系统,则可能需要这种变体)因为某些原因)?

max*_*zig 19

由于经常使用反引号,因此教授这种句法结构是有意义的。

当然,$()应该强调样式命令替换作为默认样式(和符合标准的构造)。

为什么反引号仍然流行?因为它们在打字时节省了一个字符,而且它们对眼睛的负担可以说不那么重。

  • 我不会将“眼睛不那么重”描述为一个功能,而是一个错误...... (18认同)
  • 例如,在法语键盘上,`\`` 是 Altrg+è,(很难输入),而`$`、`(`、`)` 不需要任何修饰符。 (3认同)

jay*_*ica 5

我不会将它们用于编程,并且教授在 shell 脚本中使用反引号替换作为过时是很好的(这似乎是共识)。然而,我不认为它们本质上是邪恶的,并且(至少从你对 Linux 命令行的平均教程来看)它们仍然经常用于简单的片段/单行代码中,它们可能不会被嵌套,而你只会做一次。

请参阅命令替换:反引号或美元符号/括号?.