【发布时间】:2012-09-27 19:11:18
【问题描述】:
假设我在 bash 脚本中有来自 ls 的以下文件名:
things-hd-91-Statistics.db
things.things_domain_idx-hd-38-Data.db
在 bash 中,无论哪种情况,它如何能够获取字符串 'things' 的第一部分?
基本上删除第一个-或.之后的其余字符串
【问题讨论】:
假设我在 bash 脚本中有来自 ls 的以下文件名:
things-hd-91-Statistics.db
things.things_domain_idx-hd-38-Data.db
在 bash 中,无论哪种情况,它如何能够获取字符串 'things' 的第一部分?
基本上删除第一个-或.之后的其余字符串
【问题讨论】:
你会使用parameter expansion:
string="things-hd-91-Statistics.db"
echo "${string%%-*}"
things
${parameter%%pattern} 中的“模式”(-*) 与“参数”的结尾匹配。结果是 'parameter' 的扩展值,最长匹配被删除。
与您的其他示例类似,模式将是 %%.*
【讨论】:
${string%%[-.]*}.