核心概念shell-scripting
Bash 命令替换
使用命令替换把命令的标准输出嵌入参数或变量,同时正确处理引号、换行和执行副作用。
**命令替换(command substitution)**先执行命令,再用其标准输出替换 $(...) 表达式。输出末尾连续的换行会被移除。
TODAY="$(date +%F)"printf 'today=%s\n' "$TODAY"- Bash 执行
date +%F。 - 获取命令的标准输出并删除末尾换行。
- 把结果赋给
TODAY。
一般应把替换结果放在双引号中,避免空格和通配符被再次拆分或展开:
KERNEL="$(uname -sr)"printf 'kernel=%s\n' "$KERNEL"$(date)会执行命令;$date只是读取名为date的变量。- 旧式反引号也能表示命令替换,但嵌套和转义较难阅读,新脚本优先使用
$(...)。 - 命令替换只捕获标准输出,不捕获标准错误。
- 替换中的命令仍可能修改系统或文件,不能把语法形式误认为只读操作。