Arrays 从awk返回一个数组/映射到bash

Arrays 从awk返回一个数组/映射到bash,arrays,bash,awk,Arrays,Bash,Awk,awk命令创建了一个数组,我想返回bash GIT=($(history | grep -c git | awk '{ TMP[4]=$1 } END { print TMP }')) 获取错误尝试在标量上下文中使用数组TMP 所以我尝试在一个已经存在的数组中使用awk GIT=() history | grep -c git | awk 'END { GIT[4]=$1 }' echo "${GIT[@]}" # empty result 但是结果GITarray是空的

awk命令创建了一个数组,我想返回bash

GIT=($(history | grep -c git | awk '{ TMP[4]=$1 } END { print TMP }'))
获取错误
尝试在标量上下文中使用数组TMP

所以我尝试在一个已经存在的数组中使用awk

GIT=()
history | grep -c git | awk 'END { GIT[4]=$1 }'
echo "${GIT[@]}" # empty result
但是结果
GIT
array是空的


我给出的例子没有多大意义,例如,为什么索引中有4?这只是一个例子。我需要使用awk创建的数组/映射,其中键是整数。我需要这些原始索引,因为不是所有的键都是顺序的。我有1,2,4,7,8等等。

您可以使用awk emit shell命令,然后awk输出可以是
source
d

GIT=()

source如果您提供一些示例输入和预期输出,将会有所帮助;同时,对于
awk
问题。。。您是否打算使用字段4作为
TMP
数组的索引,例如
TMP[$4]=$1
?另外,假设
TMP
是一个数组,则需要修改
awk/print
以循环遍历数组的元素;至于空的
GIT
数组。。。
awk
代码中的
GIT[]
数组仅在
awk
代码中可用(即调用/父进程无法访问该数组)。awk不是bash。您不会期望在C程序中创建一个数组,并且以某种方式让bash访问该数组,同样,您也应该对awk有相同的期望。awk和bash是两种完全不同的工具,它们有自己的语言、语法、语义和作用域。现在你已经发布了一个-如果你编辑它来向我们展示你的想法;如果你想做,而不是你想怎么做,那么我们可以帮助你做任何你想做的事情,而不是潜在地帮助你实施错误的方式。格伦·杰克曼知道我想做什么D