使用Bash 3.2,如何将两组文件读入一个数组,其中第一个数组是值的键(由第二组数组指定)。每个文件都相互关联。因此文件1中的0是文件2中0的键。
文件1:
fruit
veggies
meat
文件2:
apples
carrots
pork
我如何读取这两个文件并使数组看起来像这样:
$ARRAY[fruit] = apples
$ARRAY[veggies] = carrots
$ARRAY[pork] = meat
编辑:预期用途(因为Bash 3.2没有关联数组)
我有一个带有ID的文件和一个带有访问令牌的文件。我打算建立一个看起来像这样的数组:
$ARRAY[id] = that id's token
然后循环遍历数组,并点击一个网址,如下所示:
curl https://a.service/$ID?token=$TOKEN
我搜了一会儿,找不到任何明确的例子。提前谢谢。
答案 0 :(得分:4)
不幸的是版本4之前的bash中没有关联数组。你可以使用awk:
paste f1 f2|awk '{a[$1]=$2} END {for (i in a) print i "=" a[i]}'
meat=pork
fruit=apples
veggies=carrots
编辑:根据您编辑过的问题,您只需执行paste
并处理生成的文件/数据:
paste f1 f2
meat pork
fruit apples
veggies carrots
答案 1 :(得分:2)
根据@ anubhava的paste
方法将所有内容整合在一起:
paste file1 file2 |
while read ID TOKEN; do curl "https://a.service/$ID?token=$TOKEN"; done