跳转到内容
核心概念shell-scripting

Bash 命令替换

使用命令替换把命令的标准输出嵌入参数或变量,同时正确处理引号、换行和执行副作用。

状态
已审阅
难度
入门
平台
linux · raspberry-pi-os · busybox

**命令替换(command substitution)**先执行命令,再用其标准输出替换 $(...) 表达式。输出末尾连续的换行会被移除。

Terminal window
TODAY="$(date +%F)"
printf 'today=%s\n' "$TODAY"
  1. Bash 执行 date +%F
  2. 获取命令的标准输出并删除末尾换行。
  3. 把结果赋给 TODAY

一般应把替换结果放在双引号中,避免空格和通配符被再次拆分或展开:

Terminal window
KERNEL="$(uname -sr)"
printf 'kernel=%s\n' "$KERNEL"
  • $(date) 会执行命令;$date 只是读取名为 date 的变量。
  • 旧式反引号也能表示命令替换,但嵌套和转义较难阅读,新脚本优先使用 $(...)
  • 命令替换只捕获标准输出,不捕获标准错误。
  • 替换中的命令仍可能修改系统或文件,不能把语法形式误认为只读操作。