以特定格式解析字符串并存储其内容以供进一步处理



我有一个字符串,格式如下。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

将在repl:中输出

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")

相关内容

最新更新