核心概念shell-scripting
Bash 花括号命令组
使用花括号把多条命令作为一个整体执行,并让统一的输入输出重定向作用于整组命令。
**花括号命令组(brace group)**使用 { list; } 把一组命令作为一个整体,并在当前 Shell 环境中执行。
{ date uname -srmo} >> "$HOME/system-check.log" 2>&1末尾的重定向作用于组内全部命令。
{和第一条命令之间必须有空白或换行。}是保留字,前一条命令必须以分号或换行结束。- 花括号本身不创建子 Shell;组内变量赋值会影响当前 Shell。
( list )才是在子 Shell 环境中执行的另一种分组方式。
REPORT="$HOME/group-demo.log"{ printf '[date]\n' date printf '[kernel]\n' uname -srmo} > "$REPORT" 2>&1cat -- "$REPORT"该示例只创建或覆盖家目录中的演示文件,不需要 root 权限。
{date;}不是合法的 Bash 花括号命令组,因为保留字周围缺少必要分隔。- 这不是“数组”或“代码块变量”,正式术语是命令分组。
- 组内任意命令失败,并不会自动阻止后续命令;脚本仍需明确处理退出状态。