在 CentOS(以及大多数 Linux shell,如 bash)里,反引号 `(backtick)用于命令替换,例如:
echo `date`
虽然它和 $(...) 功能类似,但反引号有不少坑,在 CentOS 上尤其容易踩:
反引号不支持直观嵌套,需要转义:
❌ 错误 / 难读:
echo `echo `date``
✅ 正确但反人类:
echo `echo \`date\``
✅ 推荐写法:
echo "$(echo "$(date)")"
在反引号内:
\、`、$ 有特殊含义示例:
echo `echo \$HOME`
结果可能和你预期不一致。
而 $(...) 内部更接近“普通脚本”:
echo "$(echo \$HOME)"
`ls`
'ls'
视觉上容易看错,尤其在日志、脚本、远控时。
$(...) 更现代、可移植echo "当前时间:`date`"
在复杂脚本中,变量展开顺序容易出问题。
更稳妥:
echo "当前时间:$(date)"
很多人误以为:
`command`
和
'command'
一样,其实:
✅ 统一使用 $(...)
now=$(date)
files=$(ls /etc)
❌ 尽量避免反引号,除非维护老脚本
如果你愿意,我可以:
$(...)