我觉得这应该非常,非常,容易......但不知怎的,我无法弄明白。
事情很简单。我有以下if语句,我用它来检查IP并查看它们是否有反向DNS。如果有可用的有效反向DNS,我将其写入文件。如果没有,我将“NXDOMAIN”写入同一个文件。
if [[ $(dig +noall +answer -x 10.10.10.10 | grep -m 1 PTR | awk '{ print $5 }') ]]; then
dig +noall +answer -x 10.10.10.10 | grep -m 1 PTR | awk '{ print $5 }' > /root/IP
else
echo "NXDOMAIN" > /root/IP
fi
这可以正常工作,但它会不必要地运行命令两次。有没有办法,如果命令返回有效的反向DNS,我可以直接将其输出到文件,而无需再次运行命令?
所以,基本上是这样的:
if [[ $(dig +noall +answer -x 10.10.10.10 | grep -m 1 PTR | awk '{ print $5 }') ]]; then
<write output of the above command in the "/root/IP" file>
else
echo "NXDOMAIN" > /root/IP
fi
答案 0 :(得分:4)
为什么不将它存储在如下变量中:
RevLookup="$(dig +noall +answer -x 10.10.10.10 | grep -m 1 PTR | awk '{ print $5 }')"
if [[ "$RevLookup" ]]; then
echo "$RevLookup" >> /root/IP
else
echo "NXDOMAIN" >> /root/IP
fi
答案 1 :(得分:1)
将结果放在变量中。
REV_DNS=$(dig +noall +answer -x 10.10.10.10 | grep -m 1 PTR | awk '{ print $5 }')
if [[ $REV_DNS ]]
then
echo "$REV_DNS" > /root/IP
else
echo "NXDOMAIN" > /root/IP
fi