Bash截取字符串前缀删除正常但后缀无法删除是什么原因?
Bash批量字符串后缀截取失效解决方案
故障原因
- 语法错误:变量赋值语句与echo命令未做分隔直接写在同一行,Bash会将
colonna2_newname=${tmp%exception=*}识别为echo命令的临时环境变量,仅对echo子进程生效,且echo执行前会先完成变量展开,最终输出的是未做后缀裁剪的原始值。 - 匹配规则错误:
${tmp%exception=*}的作用是删除字符串末尾匹配exception=*的最短片段,但你的字符串末尾为[gbkey=CDS],无法匹配该模式,因此后缀没有任何修改。你需要匹配从_[exception=到字符串末尾的所有内容,需补全模式前缀。
修正后代码
for row in $colonna2; do tmp=${row#*lcl|} colonna2_newname=${tmp%_\[exception=*} echo "$colonna2_newname" done
内容的提问来源于stack exchange,提问作者Claudio21
相关产品推荐
相关产品推荐

