Bash 字符串处理:参数展开、序列与脚本执行方式
1. 用途介绍
Bash 字符串展开可提取文件名、替换文本并获取字符串长度;序列和 time 用于重复操作及耗时观察。本文区分 bash 执行、source 当前环境加载和子 Shell,避免配置变量不生效。
2. 准备运行环境
Linux 与 Bash,普通账号即可;先 bash --version。命令区分大小写。批量改名先在临时测试目录预览,本篇不执行真实改名。
3. 相关知识与注意点
• 参数展开 #/## 从开头删除最短/最长匹配,%/%% 从末尾删除;pattern 是 Shell 模式,不是通用正则。
• 双引号保护展开结果,避免空格分词和路径名展开。
• ${#变量} 的字符计数受 locale 影响,不等于所有场景的字节数。
• echo -e 的兼容性存在差异,脚本输出优先 printf。
• source/. 在当前 Shell 执行,可能改变当前变量和目录;bash script 通常在独立 Bash 中执行。
• ./script 需要可执行权限,解释器由 shebang 指定。time 的 real 是墙钟耗时,user/sys 是 CPU 时间。
4. 实验步骤
bash
name='alpha-beta.txt'
printf '%s\n' "$name" "${#name}" "${name:0:5}"
printf '%s\n' "${name%.txt}" "${name#*-}"
printf '%s\n' "${name/beta/gamma}"
printf '%s\n' {1..3}
seq 1 3
time printf 'hello\n'
预期字符串结果依次为原值、14、alpha、alpha-beta、beta.txt、alpha-gamma.txt;序列为1到3。time 数值取决于环境,不给固定耗时。
5. 原实验截图











6. 验证命令
保存示例为 demo.sh,运行 bash -n demo.sh 检查语法,再 bash demo.sh 对照预期输出。使用 bash -c 检查独立进程环境,source 只加载可信脚本。管道与命令替换的作用域不同,命令替换会去掉输出末尾换行。不把环境实测结果与本文预期值混淆。