如何用Bash脚本将["1.2.1","1.9.2"]转为("1.2.1" "1.9.2")
Bash字符串格式转换解决方案
错误原因分析
你之前使用的命令${MY_TAGS//[[\], .!]}是基于字符集匹配的全局替换,会删除所有属于[、]、\、,、.、!范围内的字符,导致版本号里的.被移除,最终得到无意义的数字串,完全偏离了需求。
两种可行解决方法
方法1:纯Bash参数替换(无需外部工具)
# 定义原始字符串 MY_TAGS='["1.2.1","1.9.2"]' # 替换开头的[为( temp=${MY_TAGS/[/(} # 替换结尾的]为) temp=${temp/]/)} # 全局替换","为" ",实现版本号之间的空格分隔 result=${temp//\",\"/\" \"} # 输出结果 echo "$result"
执行后直接输出:("1.2.1" "1.9.2")
方法2:使用sed工具处理
MY_TAGS='["1.2.1","1.9.2"]' result=$(echo "$MY_TAGS" | sed -e 's/^\[/(/' -e 's/\]$/)/' -e 's/","/" "/g') echo "$result"
sed命令的作用分别是:
s/^\[/(/:匹配行首的[并替换为(s/\]$/)/:匹配行尾的]并替换为)s/","/" "/g:全局匹配","并替换为" "
内容的提问来源于stack exchange,提问作者holyghostgym
相关产品推荐
相关产品推荐

