温馨提示×

centos反引号与美元号区别

小樊
44
2026-09-15 12:16:12
栏目: 智能运维

在 CentOS(以及大多数 Linux/Unix shell,如 bash)中,反引号(`)美元号加小括号($()都用于命令替换(Command Substitution),也就是“先执行里面的命令,再把输出结果替換到当前位置”。

下面从功能、写法、兼容性、嵌套、可读性几个方面说明它们的区别。


一、基本功能(相同点)

两者作用一样:执行命令并替换结果。

echo `date`
echo $(date)

效果相同,都会输出当前日期。


二、写法与可读性(主要区别)

1. 反引号(旧写法)

result=`ls -l`

2. $()(推荐写法)

result=$(ls -l)

$() 更清晰,尤其命令较长时。


三、嵌套命令(重要区别)

反引号嵌套很麻烦

echo `echo \`date\``

需要转义,容易出错。

$() 嵌套很简单

echo $(echo $(date))

$() 支持自然嵌套


四、转义字符处理不同

反引号里:

  • \ 有时会被解释
  • 容易出意外

$() 里:

  • 行为更一致
  • 像普通命令一样

示例:

echo `echo \$HOME`
echo $(echo \$HOME)

结果可能不同,取决于 shell。


五、兼容性

写法 兼容性
反引号 所有 Unix / 老 shell
$() POSIX 标准,bash / sh / zsh 都支持

✅ CentOS 的 bash 完全支持 $()


六、CentOS 中的建议

推荐使用 $()

  • 可读性好
  • 不易出错
  • 支持嵌套
  • 现代脚本标准

❌ 反引号只建议:

  • 维护老脚本
  • 兼容极老系统

七、示例对比

# 反引号
files=`ls | grep log`

# 推荐
files=$(ls | grep log)

总结一句话

在 CentOS 中,$() 是反引号的现代替代品,功能相同但更安全、更好用。

如果你愿意,我也可以讲 变量替换 $VAR 和命令替换 $() 的区别

0