在 CentOS(以及其他 Unix-like 系统)中,反引号()和 $()` 都用于执行命令替换,即将一个命令的输出作为另一个命令的参数。但它们之间存在一些差异:
可读性:$() 的语法更具可读性,因为它允许嵌套使用。例如:
echo "Today is $(date)"
如果使用反引号,嵌套命令会变得难以阅读:
echo 'Today is `date | tr " " "-"`'
嵌套:如上所述,$() 支持嵌套命令替换,而反引号不支持。例如:
echo "The current directory is $(pwd)/$(basename $(pwd))"
使用反引号实现嵌套命令替换会变得复杂且难以阅读:
echo 'The current directory is `pwd`/'$(basename '`pwd`')
兼容性:反引号在早期的 Unix 系统中就已经存在,因此在较旧的脚本中可能会看到它们。然而,$() 是在 POSIX 标准中引入的,因此在现代 shell 脚本中更推荐使用 $()。
总之,尽管反引号和 $() 都可以实现命令替换,但 $() 具有更好的可读性和嵌套支持,因此在现代 shell 脚本中更推荐使用 $()。