bash脚本将变量赋值给关联数组

时间:2013-01-17 19:26:12

标签: arrays bash associative

我一直在努力为我提供一个新概念 - bash脚本中的关联数组。

以下是我的代码的简化版本:

#!/bin/bash
declare -A MYID
MYID[hello]=world
tac /home/user/filename | while read -r line; do
  MYID[hello]=me
done
echo "${MYID[hello]}"
exit

这是我认为它会做的: 1)声明一个名为MYID的关联数组 2)在MYID中将值世界分配给密钥hello 3)逐行读取文件/ home / user / filename 4)每次读取一行时都会将我分配给MYID数组中的键hello 5)打印出“我”并退出

它做的是打印出“世界”而不是“我”。我做错了什么?

1 个答案:

答案 0 :(得分:2)

管道创建一个子shell,因此您在while循环中对MYID所做的任何更改只存在于该子shell中。试试这个:

while read -r line; do
    MYID[hello]=me
done < <(tac /home/user/filename)