这是一个历史原因 + 兼容性问题,不是 CentOS 独有的,而是 Shell(尤其是 sh/bash)决定的。
在 Linux Shell 中:
`command`
表示命令替换(Command Substitution),即:
先执行命令,再把输出结果替换到当前位置
例如:
echo "今天是 `date`"
等价于:
echo "今天是 $(date)"
$(...) 是后来才加入的(POSIX 标准)CentOS 的历史脚本很多写于 20 年前,当时:
$(...) 不一定可用所以大量老脚本、教程、系统脚本都沿用了反引号。
CentOS 6 及以前大量使用:
result=`ls`
而不是:
result=$(ls)
很多系统脚本为了 最大兼容性,仍然保留反引号。
很多教程、书籍、运维文档:
$(...)导致反引号在 CentOS 社区中非常常见。
$(...) 对比| 特性 | 反引号 `cmd` |
$(cmd) |
|---|---|---|
| 可读性 | 差 | ✅ 好 |
| 可嵌套 | 很难 | ✅ 支持 |
| POSIX | ✅ 是 | ✅ 是 |
| 推荐程度 | ❌ 不推荐 | ✅ 强烈推荐 |
❌ 反引号(难看且容易错):
echo `echo \`date\``
✅ $(...)(清晰):
echo "$(echo "$(date)")"
没有本质区别
$(...)✅ 新脚本强烈建议用 $(...)
CentOS 用反引号不是因为它更好,而是因为它更老。
如果你愿意,我可以帮你: