有什么理由使用或教导“……”替代新的开发?

有什么理由使用或教导“……”替代新的开发?

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

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

  • 巴什
  • (因此还有 BusyBox,因此大多数嵌入式 Linux)
  • 短跑
  • FreeBSD /bin/sh

并由$(…)IEEE 1003.1 指定。

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

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

答案1

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

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

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

答案2

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

命令替换:反引号或美元符号/括号括起来?

答案3

我避免使用该$()构造,因为它在现实世界中不可移植。您列出了四种外壳 - 比周围的外壳有更多的变化(一个数量级?)。尝试在 Solaris /bin/sh 中运行脚本,看看效果如何。

另一方面,你们什么时候停止支持旧系统?你永远不会进步到新的做事方式吗?我认为你应该相信你自己的判断,如果你能看到新方式相对于旧方式的明确优势,那么就去做吧......这不是其中之一(我个人发现背景更清晰 - 它们不能是与 shell 变量替换混淆,这是不同的事情)

相关内容