我有一个格式如下的字符串。LHS上的字符串可以是任何字符串,并且RHS上的结果的{}中的值的长度是可变的,并且其中一些由定界符分隔。
我无法理解如何将LHS和RHS提取为两个不同的变量。
输入字符串格式:
[TEAM DETAILS]={2,TeamName,23,4697}
我希望能够将LHS提取为一个数组。对于RHS,我需要处理每个用逗号分隔的条目,并将它们也存储到数组中。
我不知道该怎么做。看起来很简单,但我无法从中得出逻辑。
该脚本:
# input
in="[TEAM DETAILS]={0001/0880,TeamName,0881,0882/3999,8400/8499,4900/4999,6900/6999,9101,9104,5851,5850,5855,7697}"
# get var name
# remove everything after ]=
var="${in%]=*}"
# remove the leading [
var="${var#[}"
# get values
# remove everything before ={
valstr="${in#*={}"
# remove trailing }
valstr="${valstr%'}'}"
# read string as array
IFS=, read -r -a "values" <<<"$valstr"
# output
declare -p var values
declare -- var="TEAM DETAILS"
declare -a values=([0]="0001/0880" [1]="TeamName" [2]="0881" [3]="0882/3999" [4]="8400/8499" [5]="4900/4999" [6]="6900/6999" [7]="9101" [8]="9104" [9]="5851" [10]="5850" [11]="5855" [12]="7697")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句