在 CentOS(以及一般的 Bash / shell) 里,反引号 ` 是可以嵌套的,但写法很别扭,而且容易出错。更推荐用 $() 来代替反引号,因为 $() 天然支持嵌套,可读性也更好。
下面分别说明。
\ 转义echo `echo \`echo hello\``
输出:
hello
`...`\`echo hello\`(反引号被转义)$() 嵌套(强烈建议)$() 完全支持多层嵌套,不需要转义。
echo $(echo $(echo hello))
输出:
hello
path=$(dirname $(readlink -f $(which nginx)))
echo $path
| 方式 | 是否支持嵌套 | 可读性 | 推荐度 |
|---|---|---|---|
反引号 ` ` |
✅(需转义) | ❌ 差 | ❌ 不推荐 |
$() |
✅(原生支持) | ✅ 好 | ✅ 推荐 |
✅ 在 CentOS / Bash 中不要使用反引号嵌套
✅ 统一使用 $(command)
如果你有具体的嵌套命令场景,我可以帮你直接改写。