在彻底搜索了一种在bash中创建关联数组的方法后,我发现它declare -A array可以解决这个问题.但问题是,它仅适用于bash版本4,服务器在我们系统中的bash版本是3.2.16.
如何在bash 3中实现某种类似关联数组的hack?这些值将传递给类似的脚本
ARG=array[key];
./script.sh ${ARG}
Run Code Online (Sandbox Code Playgroud)
编辑:我知道我可以在awk或其他工具中执行此操作,但我正在尝试解决的方案需要严格的bash.
我正在尝试将结构化文件读入 Bash 中的关联数组。该文件在每一行中存储一个人名和一个人地址。例如:
person1|address1
person2|address2
...
personN|addressN
Run Code Online (Sandbox Code Playgroud)
我正在使用下面的脚本。
#!/bin/bash
declare -A address
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 < adresses.txt
for name in ${!address[*]}
do
echo "$name - ${address[$name]}"
done
Run Code Online (Sandbox Code Playgroud)
脚本正常工作。但是,在 FOR 循环中,当人名有空格(例如“John Nobody”)时,我遇到了一些问题。我怎样才能解决这个问题?