我一直在努力为我提供一个新概念 - 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)打印出“我”并退出
它做的是打印出“世界”而不是“我”。我做错了什么?
答案 0 :(得分:2)
管道创建一个子shell,因此您在while循环中对MYID
所做的任何更改只存在于该子shell中。试试这个:
while read -r line; do
MYID[hello]=me
done < <(tac /home/user/filename)