Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用数组内部和外部AWK语句_Arrays_Bash_Shell_Awk - Fatal编程技术网

Arrays 使用数组内部和外部AWK语句

Arrays 使用数组内部和外部AWK语句,arrays,bash,shell,awk,Arrays,Bash,Shell,Awk,我希望将来自用户的输入存储在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 ":

我希望将来自用户的输入存储在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[@]}
declare-a数据
awk-F“
开始{
cmd=“读取a;回显$a”
}
{
i=1;
NR==1;

当(i将变量的值传递到
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
$a=aaa
$b=($(awk-va=“$a””开始{for(i=1;i您可以这样做:

array=($(awk 'BEGIN{print "first";print "second"}')) 

echo ${array[0]}
first
echo ${array[1]}
second

但我不确定你的意思是否是这样。

Bash和awk是不同的进程。它们不可能访问和修改彼此的数据。
basic_data
中有什么内容?看起来你对shell和awk的用途非常困惑,因为你试图将awk用于shell应该用于的东西,然后尝试弹出在awk脚本中创建shell数据结构。如果您通过示例输入/输出告诉我们您要做的事情会更好,这样我们就可以为您指出正确的方向。亲爱的,我要做的是让用户根据“基本数据”中存储的字段插入数据例如,基本数据文件中存储的数据是Id和名称,因此我使用条件为“NR=1”的AWK来获取字段,然后让用户根据字段插入数据并将其存储在数组中,以便我可以对其进行一些验证。希望现在我们在同一页:)……谢谢