这让我疯了.我想要做的就是从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)
搞什么鬼.
好吧,事实证明它不是一个错误.
接下来是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)
当然这是一个微妙的点,文档中应该有关于此的巨大警告信号!无论如何,我很高兴我解决了它.