【发布时间】:2019-04-16 15:30:38
【问题描述】:
以下是我尝试从 Zsh 脚本评估的一些命令的摘录:
cmd="ping -qc 3 -W 5 8.8.8.8 | xargs -0d '\n' awk -f presetup/testping.awk 2>&1"
print -r ${cmd}
output=$(eval ${cmd})
print ${output}
我不知道我错过了什么,但我想做的只是用一个 awk 脚本处理 ping 的 stderr 和 stdout。这是我得到的输出:
awk: presetup/testping.awk:6: fatal: cannot open file `PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.' for reading (No such file or directory)
该程序应该解析 ping 命令的每个输出行,并与正则表达式匹配其输出。关于我缺少什么的任何想法?
【问题讨论】:
-
xargs是错误的,你必须通过管道将 stdout 和 stderr 传输到awk。 -
@karakfa,感谢您的意见。我删除了
xargs并尝试了这个:ping -qc 3 -W 5 8.8.8.8 2>&1 awk -f presetup/testping.awk -没有成功。我有以下输出:ping: -: Name or service not known. -
@karakfa,没关系,我找到了。正确的方法似乎如下:
ping -qc 3 -W 5 8.8.8.8 | 2>&1 awk -f presetup/testping.awk -感谢您为我指明正确的方向!