Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
File 如何将系统命令输出提取到awk程序内的变量中?_File_Awk_Io Redirection - Fatal编程技术网

File 如何将系统命令输出提取到awk程序内的变量中?

File 如何将系统命令输出提取到awk程序内的变量中?,file,awk,io-redirection,File,Awk,Io Redirection,我从AWK脚本调用的系统命令的输出显示在终端上。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是一个单字字符串“yes”或“no”)。然后需要将该变量与脚本中的字符串进行比较(如果为“是”或“否”),最后需要将命令的输出保存到新文件中。在AWK里我该怎么做 "command" | getline var 这将执行命令,并将输出一次一行放入变量var。e、 g $ awk 'BEGIN{while("seq 3" | getline x) print "ou

我从AWK脚本调用的系统命令的输出显示在终端上。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是一个单字字符串“yes”或“no”)。然后需要将该变量与脚本中的字符串进行比较(如果为“是”或“否”),最后需要将命令的输出保存到新文件中。在AWK里我该怎么做

"command" | getline var
这将执行
命令
,并将输出一次一行放入变量
var
。e、 g

$ awk 'BEGIN{while("seq 3" | getline x) print "output: " x}'
output: 1
output: 2
output: 3
在两次调用之间,它也将保持不变:

$ seq 3 | awk '{"seq 4 7" | getline x; print x}'
4
5
6
注意:7没有打印,因为没有第四行输入


这篇文章显示了使用
|&
,这没有出现在手册页中,我不确定区别是什么。我认为它可能也捕获了stderr,但在我的测试中它没有这样做。

可能重复我在另一篇文章中列出的解决方案。这里列出的getline解决方案似乎不起作用。我不是在shell上运行awk命令,而是使用其他awk命令运行程序脚本。当我尝试使用getline使用该解决方案时,它抛出了一个错误,称为Bad解释器。我想我的awk实现不支持getline。还有其他方法吗?“糟糕的解释器”通常意味着错误的shebang,而不是错误的命令。张贴你得到的准确错误。