2013-01-17 90 views
1

我一直在为一个新概念奋斗 - 我在bash脚本中关联数组。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 MYID 2)价值世界分配给该键打招呼 3)读取文件/ home /用户/文件名向后一行每次读取一行分配我到关键打招呼MYID阵列 5)打印出“我”和退出

在时间线 4)什么它确实是打印出“世界”而不是“我”。我究竟做错了什么?

回答

2

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

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

谢谢你,这似乎工作。我会将其添加到我要学习的东西列表中。 – user1464409