温馨提示×

centos反引号在脚本中怎么用

小樊
35
2026-10-18 00:53:46
栏目: 智能运维

在 CentOS(以及所有 Linux/Unix 系统的 Bash 中),反引号 ` 用于命令替换(Command Substitution),也就是:
先执行反引号里的命令,再用命令的输出结果替换掉整个反引号表达式。


一、基本用法

result=`命令`

示例 1:获取当前日期

today=`date +%Y-%m-%d`
echo "今天是 $today"

等价于:

today=$(date +%Y-%m-%d)

示例 2:在脚本中使用

#!/bin/bash

files=`ls *.txt`
echo "文本文件有:"
echo "$files"

二、反引号 vs $()

写法 推荐程度 说明
`command` 旧写法 早期 Shell 使用
$(command) ✅ 推荐 可读性好,支持嵌套

嵌套对比

❌ 反引号嵌套麻烦:

echo `echo \`date\``

✅ $() 更清晰:

echo $(echo $(date))

三、常见使用场景

1️⃣ 获取命令结果

ip=`hostname -I`
echo "本机IP: $ip"

2️⃣ 用于条件判断

if [ `whoami` = "root" ]; then
    echo "你是root用户"
fi

3️⃣ 用于循环

for user in `cat userlist.txt`; do
    echo "用户: $user"
done

四、注意事项(很重要)

⚠ 1. 反引号里不要随便加空格

# 正确
var=`date`

# 错误
var= `date`   # 会把 `date` 当命令执行

⚠ 2. 输出包含空格时要注意

files=`ls`
for f in $files; do
    echo "$f"
done

✅ 更安全写法:

while read f; do
    echo "$f"
done < <(ls)

⚠ 3. CentOS 默认是 Bash

CentOS 7/8 默认 shell 是 /bin/bash,反引号完全支持。


五、总结一句话

反引号用于在脚本中“执行命令并取结果”,但现代脚本更推荐用 $(命令)。

如果你有具体脚本或报错信息,可以直接贴出来,我可以帮你改。

0 踩