我从AWK脚本调用的系统命令的输出正在终端上显示。我不希望shell显示系统命令的输出,而是希望将此输出读入脚本的变量(系统命令的输出是单字符串“yes”或“no”) 。然后需要将此变量与脚本中的字符串进行比较(如果其为“是”或“否”),并且命令的输出最终需要保存到新文件中。我如何在AWK中执行此操作?
答案 0 :(得分:1)
"command" | getline var
这将执行command
并将输出(一次一行)放入变量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不会打印,因为没有第四行输入。
帖子here显示使用|&
,但不会出现在手册页中,我不确定区别是什么。我认为它也可能捕获stderr,但它在我的测试中没有这样做。