温馨提示×

centos反引号与美元区别

小樊
46
2026-09-03 07:17:32
栏目: 智能运维

在 CentOS(以及其它 Linux/Unix shell,如 bash)里,反引号(` `)美元符号加小括号($( ) 都用来做命令替换(command substitution),但有一些重要区别。


一、基本作用(相同点)

两者都是:先执行里面的命令,再把输出结果替换到当前位置

echo `date`
echo $(date)

上面两条命令效果基本一样,都会输出当前时间。


二、反引号 ```(旧写法)

result=`ls -l`

特点

  • 最早的 shell 语法(Bourne shell)
  • 不支持嵌套
  • 可读性较差
  • 转义复杂

嵌套问题示例(不推荐)

echo `echo \`date\``

很容易写错,且不同 shell 行为不一致。


三、$( )(推荐写法)

result=$(ls -l)

特点

  • POSIX 标准
  • 支持嵌套
  • 可读性更好
  • 转义更简单

嵌套示例(正确)

echo $(echo $(date))

四、反引号 vs $() 对比表

对比项 反引号 ` ` $( )
是否推荐 ❌ 不推荐 ✅ 推荐
嵌套支持 ❌ 不支持 ✅ 支持
可读性
转义复杂度
标准 老 shell POSIX

五、在 CentOS 上的建议

CentOS(bash)中一律推荐使用 $( )

# 推荐
now=$(date +%F)

# 不推荐
now=`date +%F`

六、常见误区

  • $ 本身不是命令替换
    • $var 是变量
    • $( ) 才是命令替换

如果你愿意,我也可以讲:

  • 命令替换 vs 变量替换
  • $() 在脚本中的实战用法
  • 反引号在老脚本中的兼容问题

0