我希望将来自用户的输入存储在AWK语句中的数组中,然后在AWK语句之外显示该数组的元素。 问题是我无法在AWK之外显示数组元素 这是代码:
declare -a data
awk -F" " '
BEGIN{
cmd="read a; echo $a"
}
{
i=1;
NR==1;
while(i<=NF)
{
print $i
printf "Please Enter " $i ": "
cmd|getline input
close(cmd)
**data[$i]=input**
print data[$i]
print $i,NF
i++
}
}
' basic_data
#Here I want to display array elements but i get nothing:
echo ${data[@]}
感谢您的支持 在此先感谢:)
答案 0 :(得分:1)
要将变量的值传递到awk
,您可以使用-v
开关将其分配给awk变量。要将数据从awk
接收回变量,可以使用命令替换。
$ a=aaa
$ b=($(awk -va="$a" 'BEGIN{for(i=1;i<=3;i++) {printf("%s%d\n", a, i)}}'))
$ for x in "${b[@]}"; do echo "$x"; done
aaa1
aaa2
aaa3
答案 1 :(得分:1)
你可以这样做:
array=($(awk 'BEGIN{print "first";print "second"}'))
echo ${array[0]}
first
echo ${array[1]}
second
但我不确定这是不是你的意思。