Bash 字符串处理:参数展开、序列与脚本执行方式

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 只加载可信脚本。管道与命令替换的作用域不同,命令替换会去掉输出末尾换行。不把环境实测结果与本文预期值混淆。

相关推荐
小羊没烦恼!1 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
hhwyqwqhhwy1 小时前
设备树之 provider 和 consumer
java·linux·前端
学Linux的语莫1 小时前
python中类的常见写法
开发语言·python·状态模式
需要8261 小时前
容器化 Java:镜像瘦身与 JVM 容器感知(cgroup)
java·开发语言·jvm
dyxal2 小时前
A2A 协议 v1.0 完全指南:方法名、Agent Card、三种绑定与 FastAPI 实战
开发语言·qt·fastapi
aaa最北边2 小时前
Linux 上的交叉编译
linux·运维·服务器
譕痕2 小时前
Rabbit 实例
java·开发语言·java-rabbitmq
综合简报2 小时前
黑五海外发稿投给谁?三类海外媒体发稿渠道的分工
开发语言·php·媒体
小张成长计划..2 小时前
【Linux】27:日志
linux·运维·服务器