在bash中动态创建关联数组

麦克室

我有一个变量($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,不支持关联数组)。我将在下面标记正确的答案。

标记融合

data在填充之前,尝试声明为关联数组,例如:

$ typeset -A data                   # declare as an associative array
$ while read line
do
    key=${line%%=*}
    value=${line#*=}

    echo $key=$value
    data[$key]="$value"

done <<< "${OUTPUT}"

$ typeset -p data
declare -A data=([mode]="all Crucible modes" [period_dt]="2020-11-25 20:31:14.923158 UTC" [deaths]="118" [best_single_game_kills]="-1" [efficiency]="2.8474576" [precision_kills]="76" [activities_entered]="18" [seconds_played]="8535" [total_lifespan]="8463.277" [average_lifespan]="71.72269" [character_id]="2305843009264966985" [kills]="233" [activities_won]="10" [average_kill_distance]="15.729613" [activities_lost]="8" [mode_id]="5" [assists]="103" [suicides]="1" [total_kill_distance]="3665" [platform]="Xbox" [kills_deaths_ratio]="1.9745762" [platform_id]="1" [kills_deaths_assists]="2.411017" [opponents_defeated]="336" [member_id]="4611686018429783292" )

$ echo "${data['seconds_played']}"
8535

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在foreach循环中的php中创建动态关联数组

来自分类Dev

动态bash关联数组键

来自分类Dev

d中的动态关联数组

来自分类Dev

bash中来自querystring的关联数组?

来自分类Dev

bash中的嵌套关联数组

来自分类Dev

在Makefile中迭代bash关联数组

来自分类Dev

关联数组中的关联数组

来自分类Dev

Bash关联数组并动态分配变量

来自分类Dev

从bash变量和关联数组创建json

来自分类Dev

bash中的关联数组名称数组

来自分类Dev

尝试创建关联数组?

来自分类Dev

尝试创建关联数组?

来自分类Dev

存储Bash关联数组

来自分类Dev

BASH关联数组打印

来自分类Dev

BASH关联数组打印

来自分类Dev

在jQuery中创建一个关联数组

来自分类Dev

在Rust中创建一个关联数组

来自分类Dev

在PHP / MySQL查询中创建关联数组

来自分类Dev

在MySQL中用重复的值在PHP中创建关联数组

来自分类Dev

在JavaScript中创建一些关联数组

来自分类Dev

在PHP中从CSV创建多维关联数组

来自分类Dev

创建关联数组,同时在magneto 2中遍历集合

来自分类Dev

如何在JavaScript中创建和修改关联数组?

来自分类Dev

在jQuery中创建一个关联数组

来自分类Dev

在MySQL中用重复的值在PHP中创建关联数组

来自分类Dev

如何在bash中访问关联数组

来自分类Dev

Bash-关联数组中的值的指针?

来自分类Dev

在Bash测试中是否声明了关联数组

来自分类Dev

Bash将星形字符视为关联数组中的单词