在 CentOS(或其他 Linux 发行版、Shell 环境)中,反引号(`)不执行命令,通常不是 Shell 不支持,而是使用方式或环境导致看起来“没执行”。下面按常见原因逐一说明。
反引号是命令替换的旧写法:
echo `date`
等价于(推荐写法):
echo $(date)
如果上面这条命令没有任何输出,才叫“不执行”。
echo '`date`'
输出:
`date`
❌ 单引号会完全禁止命令替换
✅ 解决:
echo "`date`"
# 或
echo $(date)
错误示例:
var = `date`
会报语法错误(等号两边不能有空格)
正确:
var=`date`
# 或
var=$(date)
CentOS 默认是 bash,但如果你显式用:
sh script.sh
某些旧 sh 对复杂反引号支持不好(嵌套尤其容易出错)
✅ 建议:
$( )#!/bin/bash例如:
echo \`date\`
输出:
`date`
很多编辑器会输入:
`date` (中文符号)
Shell 不认识
✅ 确保是英文键盘下的:
`date`
❌ 容易出错:
echo `echo `date``
✅ 正确写法:
echo $(echo $(date))
✅ 不要用反引号,用 $()
原因:
now=$(date)
echo "当前时间: $now"
type date
which date
echo `date`
echo $(date)
如果 $(date) 有输出而 `date` 没有,那基本就是写法或环境错误,不是 CentOS 不支持。
如果你愿意,可以把具体命令或脚本贴出来,我可以直接帮你指出是哪一行导致“反引号不执行”。