跳转到正文

bash 总览 ​

本页结论:bash 是 POSIX 生态的事实标准,也是绝大多数 Linux 服务器与 CI 环境的默认 Shell。本卷全部行为结论来自锁版镜像 bash:5.2 容器内采集的真实输出快照(demos/bash/*.out.txt),学习路径为 syntax(语法骨架) → args(入参模型) → pitfalls(真实陷阱)。

一句话定位 ​

bash = POSIX 生态事实标准 / 服务器默认。

  • 服务器脚本、CI 脚本、容器入口脚本(docker-entrypoint.sh)的默认读者就是 bash;
  • 语法是 POSIX sh 的超集,学一次即可在几乎所有 Linux 环境复用;
  • 与 zsh、fish 的差异,见本目录另外两卷以及 /matrix/args-matrix。

版本基线 ​

完整版本目录列出本仓库已收录的版本主题;已有运行基线与镜像证据继续以本页说明为准。

快照 demos/bash/00_env.sh.out.txt(容器内真实采集):

text
version=GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-musl)
shell=bash
platform=linux
  • 运行镜像:bash:5.2,tag+digest 双锁定,登记在仓库根 .env.versions(BASH_IMAGE=...);
  • 采集方式:scripts/run-docker-demos.js 把 demos/bash/ 只读挂载进容器,逐个运行脚本,stdout 写入源码旁同名 *.out.txt;
  • 快照只收录 stdout:01_hello_io 里发往 stderr 的那一行不会出现在快照里,这是刻意的流分离设计。

统一任务覆盖(9 任务) ​

9 个统一任务在 bash 中的脚本与输出快照(快照与源码同目录,位于仓库 demos/ 内,在线浏览见 GitHub demos/bash):

#任务脚本输出快照
00环境信息(版本、平台)demos/bash/00_env.shdemos/bash/00_env.sh.out.txt
01Hello 与 I/O(stdout/stderr、退出码)demos/bash/01_hello_io.shdemos/bash/01_hello_io.sh.out.txt
02变量与引用(分词、插值、glob 安全)demos/bash/02_variables_quoting.shdemos/bash/02_variables_quoting.sh.out.txt
03入参解析($0/$#/$@、case/shift 循环)demos/bash/03_args_parsing.shdemos/bash/03_args_parsing.sh.out.txt
04控制流(for/while/glob 循环)demos/bash/04_control_flow.shdemos/bash/04_control_flow.sh.out.txt
05函数与作用域(stdout 回值、退出码回状态)demos/bash/05_functions_scope.shdemos/bash/05_functions_scope.sh.out.txt
06管道与文件(glob、cut|sort|uniq 管线)demos/bash/06_pipes_files.shdemos/bash/06_pipes_files.sh.out.txt
07错误处理(|| 兜底、set -e)demos/bash/07_errors.shdemos/bash/07_errors.sh.out.txt
08综合实战(暂存、批量改名、校验、报表)demos/bash/08_real_world.shdemos/bash/08_real_world.sh.out.txt

统一输入数据在 demos/shared/fixtures/:orders.csv(1 表头 + 5 笔订单,其中 3 笔 paid)与 data/(app.log、config.csv、readme.txt 三个文件)。这解释了各任务输出中的 paidCount=3、loopFiles=3、statusCounts=paid:3,pending:1,refunded:1。

学习路径 ​

  1. 语法骨架:变量与引用、条件、循环、函数、管道、错误处理——全部用本仓库 demo 的真实代码与输出讲解;
  2. 入参模型:$0/$#/$@ 与 while/case/shift 手工解析循环;
  3. 真实陷阱:引号缺失分词、set -e 的坑、退出码通道限制。

相关页面 ​

适用边界 ​

适合 Bash 脚本与交互;Bash 扩展不是 POSIX sh 的通用语法,浏览器 just-bash 也不等同于本机 GNU Bash。

实验入口与范围 ​

浏览器实验台提供 Bash 风格与 BusyBox 等已有引擎;这些不能自动代表本产品的完整实现。 统一任务复现手册说明已有脚本、输入和采集方式;未进入快照矩阵的 Shell 请按本产品安装页在本机实践。 本产品的已采集输出见 Docker 验证证据。