shell - nslookup 捕获变量中的 stderr 并显示

标签 shell stderr nslookup

在 shell 脚本中,我对多个 URL 运行 nslookup

有时某些url返回无法解析错误。我需要在变量中捕获这些错误。

这里是 nslookup 的代码,它获取返回的 IP 地址

output=$(nslookup "$URL" | grep Add | grep -v '#' | cut -f 3 -d ' ' | awk 'NR>1' )

现在在相同的变量输出中,我想捕获错误

nslookup: can't resolve

Stdout 我正在将其捕获到文件中。

我尝试了不同版本的重定向 - 2>&1 和其他版本,但错误未分配给变量。我不希望错误被重定向到单独的文件,但希望将其记录在上面的输出变量中。

最佳答案

只要使用 awk,就可以大大简化事情

nslookup "$URL" 2>&1 | 
awk -e '/Add/ && !/#/ && NR > 1 {print $2}' 
    -e '/resolve|NXDOMAIN/ { print "error" }'

为了清楚起见,一行已分成三行。我无法重现您所说的 2&>1 问题,也不认为它会失败。

关于shell - nslookup 捕获变量中的 stderr 并显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16421025/

相关文章:

linux - 需要简单 bash 脚本的帮助

linux - 如何显示以特定字母开头和结尾的文件名?

shell - 列出符号链接(symbolic link)和位置,指向特定目录

shell - Cloudformation 返回 RollbackInProgress

bash - 在 Bash 中重定向 stderr 和 stdout

bash - 捕获任何 STDERR 数据的函数

winapi - 我可以单独捕获 stdout/stderr 并保持原始顺序吗?

php - 如何以编程方式编写 nslookup?

Linux Shell脚本逐行解析多个文件

java - 如何将 NsLookup 程序的输出获取到单独程序中的 JTextArea 中