在 CentOS(以及所有 Linux/Unix 系统的 Bash 中),反引号 ` 用于命令替换(Command Substitution),也就是:
先执行反引号里的命令,再用命令的输出结果替换掉整个反引号表达式。
result=`命令`
today=`date +%Y-%m-%d`
echo "今天是 $today"
等价于:
today=$(date +%Y-%m-%d)
#!/bin/bash
files=`ls *.txt`
echo "文本文件有:"
echo "$files"
| 写法 | 推荐程度 | 说明 |
|---|---|---|
`command` |
旧写法 | 早期 Shell 使用 |
$(command) |
✅ 推荐 | 可读性好,支持嵌套 |
❌ 反引号嵌套麻烦:
echo `echo \`date\``
✅ $() 更清晰:
echo $(echo $(date))
ip=`hostname -I`
echo "本机IP: $ip"
if [ `whoami` = "root" ]; then
echo "你是root用户"
fi
for user in `cat userlist.txt`; do
echo "用户: $user"
done
# 正确
var=`date`
# 错误
var= `date` # 会把 `date` 当命令执行
files=`ls`
for f in $files; do
echo "$f"
done
✅ 更安全写法:
while read f; do
echo "$f"
done < <(ls)
CentOS 7/8 默认 shell 是 /bin/bash,反引号完全支持。
反引号用于在脚本中“执行命令并取结果”,但现代脚本更推荐用
$(命令)。
如果你有具体脚本或报错信息,可以直接贴出来,我可以帮你改。