Mic*_*and 16 shell command-substitution
我的理解是,更现代的$(...)
命令替换语法优于`
基于旧的语法,因为嵌套和转义语法更容易且不易出错。
此外,似乎/bin/sh
现代使用的大多数风格的 shell 都支持$(…)
:
并且$(…)
是由 IEEE 1003.1 指定的。
所以我有两个非常相关的问题:
$(...)
,并且`
仅作为他们在阅读其他开发人员的 shell 脚本时可能会遇到的过时变体进行讨论(如果他们正在使用非常旧的系统或非标准系统,则可能需要这种变体)因为某些原因)?max*_*zig 19
由于经常使用反引号,因此教授这种句法结构是有意义的。
当然,$()
应该强调样式命令替换作为默认样式(和符合标准的构造)。
为什么反引号仍然流行?因为它们在打字时节省了一个字符,而且它们对眼睛的负担可以说不那么重。
我不会将它们用于编程,并且教授在 shell 脚本中使用反引号替换作为过时是很好的(这似乎是共识)。然而,我不认为它们本质上是邪恶的,并且(至少从你对 Linux 命令行的平均教程来看)它们仍然经常用于简单的片段/单行代码中,它们可能不会被嵌套,而你只会做一次。