我有一个变量($OUTPUT
),其中包含以下名称/值对:
member_id=4611686018429783292
platform=Xbox
platform_id=1
character_id=2305843009264966985
period_dt=2020-11-25 20:31:14.923158 UTC
mode=all Crucible modes
mode_id=5
activities_entered=18
activities_won=10
activities_lost=8
assists=103
kills=233
average_kill_distance=15.729613
total_kill_distance=3665
seconds_played=8535
deaths=118
average_lifespan=71.72269
total_lifespan=8463.277
opponents_defeated=336
efficiency=2.8474576
kills_deaths_ratio=1.9745762
kills_deaths_assists=2.411017
suicides=1
precision_kills=76
best_single_game_kills=-1
每行以
\n
结尾。我想循环遍历它们,将它们解析为关联数组,并通过变量名访问数组中的值。
while read line
do
key=${line%%=*}
value=${line#*=}
echo $key=$value
data[$key]="$value"
done < <(echo "$OUTPUT")
#this always prints the last value
echo ${data['seconds_played']}
这似乎有效,即key/value
打印正确的值,但是当我尝试从数组中提取任何值时,它总是返回最后一个值(在本例中为-1
)。
我觉得我可能漏掉了一些显而易见的东西,但是已经困扰了我几个小时。
更新:我的特定问题是我正在运行一个不支持关联数组的bash
版本(在OSX上为3.2.57)。我将在下面标记正确答案。
typeset -p data
显示什么? - markp-fuso${data['seconds_played']}
?我得到了一个语法错误。 - KamilCuk