如何使用连接在一起的命令在AWK中使用getline

ldo*_*dog 3 awk getline

这让我疯了.我想要做的就是从awk向终端传递命令,其中命令是由其他变量连接在一起的字符串.

awk的文档说的是类似的东西

"echo" $1 | getline var
Run Code Online (Sandbox Code Playgroud)

应该将$ 1的值放入var.但这种情况并非如此.我在这里错过了什么?

我应该补充一点,我实际上有一个循环

for ( i = 1; i <=NF ; i=i+1 )
{
    "echo" $i | getline var
     printf var " "
}

printf "\n"
Run Code Online (Sandbox Code Playgroud)

对于inputfile喜欢

 0 2
 1 2
Run Code Online (Sandbox Code Playgroud)

输出

 0 0
 0 0
Run Code Online (Sandbox Code Playgroud)

搞什么鬼.

ldo*_*dog 8

好吧,事实证明它不是一个错误.

接下来是getline打开一个新文件,根据您的系统设置,每个程序只能打开X文件.一旦你最大限度地打开文件,getline就无法打开任何新的fd.解决方案是你必须打电话

for ( i = 1; i <=NF ; i=i+1 )
{
     command="echo" $i
     command | getline var
     close(command)
     printf var " "

}

printf "\n"
Run Code Online (Sandbox Code Playgroud)

当然这是一个微妙的点,文档中应该有关于此的巨大警告信号!无论如何,我很高兴我解决了它.