温馨提示×

centos反引号为何被弃用

小樊
37
2026-10-20 21:18:56
栏目: 智能运维

在 CentOS(以及更广泛的 shell 脚本语境中)里,反引号(`…`)被称为“旧式命令替换(legacy command substitution)”,它并没有被“强制删除”,但在现代脚本编写中不推荐继续使用,主要原因如下:


1. 嵌套困难、可读性差

反引号嵌套时必须转义:

`echo \`ls\``

而 $(...) 可以自然嵌套:

$(echo $(ls))

在复杂脚本中,$() 明显更易读、更易维护。


2. 容易与单引号混淆

反引号 ` 和单引号 ' 在视觉上非常相似,尤其在终端、编辑器、文档中:

echo `date`
echo 'date'

新手很容易写错,导致逻辑错误。


3. $() 是 POSIX 标准推荐写法

POSIX shell 明确推荐使用:

$(command)

而不是反引号。CentOS 使用的 bash / dash 都遵循该标准。


4. 反引号在某些上下文中有歧义

例如:

  • 在双引号中
  • 在复杂字符串中
  • 在正则或特殊字符环境中

$() 的行为更一致、更可预测。


5. CentOS / RHEL 的“弃用”是风格与规范层面

在 CentOS 中:

  • 反引号仍然可用
  • 但:
    • ShellCheck 会警告
    • 红帽 / CentOS 文档示例基本都用 $()
    • 新书、新脚本都不推荐

总结

反引号没有被“删除”,只是被现代 shell 规范和最佳实践弃用。

✅ 推荐:

now=$(date)

❌ 不推荐:

now=`date`

如果你愿意,我也可以帮你把旧脚本里的反引号批量改成 $(...)。

0 踩