我正在尝试使用 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/