arrays - 在 Bash 中将文件读入关联数组

标签 arrays linux bash shell

我正在尝试使用 Bash 脚本将结构化文件的信息读入关联数组。该文件的每一行都包含一个人的姓名及其地址,以“|”分隔。例如:

person1|address of person1
person2|address of person2
...
personN|address of personN

我尝试使用下面的脚本来做到这一点。在 WHILE 循环中,正在打印信息。但是,在 FOR 循环中没有打印信息。似乎信息没有存储在 WHILE 循环之外的关联数组中。

我做错了什么?为什么这不起作用?有没有更有效的方法来做到这一点?

#!/bin/bash
declare -A address
cat adresses.txt | while read line
do
    name=`echo $line | cut -d '|' -f 1`
    add=`echo $line | cut -d '|' -f 2`
    address[$name]=$add
    echo "$name - ${address[$name]}"
done

for name in ${!address[*]}
do
    echo "$name - ${address[$name]}"
done

最佳答案

cut 的错误和无用用法

#!/bin/bash
declare -A address
while IFS=\| read name add
do
    address[$name]=$add
done < adresses.txt

for name in ${!address[*]}
do
    echo "$name - ${address[$name]}"
done

关于arrays - 在 Bash 中将文件读入关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40387649/

相关文章:

javascript - 有没有办法让对象过滤器在没有命名引用的情况下传递对象?

linux - Zynq-7000可以单步吗

linux - 为什么附加会停止 Linux 中的进程/线程?

linux - 如何在 Linux 上获得总体 CPU 使用率(例如 57%)

linux - 在 Bash 中,根据文件名将文件移动到目录

java - 骑士游算法

javascript - 找到数组的数组中最小的数字

linux - 我正在尝试编写一个 bash 脚本,但没有在终端中显示结果

bash - 无法使用带有 docker exec 的 psql 命令行从文件运行查询

javascript - 单击按钮时显示 2 个组件中的 1 个