我覺得這應該非常非常容易......但不知何故,我無法弄清楚它。bash - 如果命令輸出不爲空,則將輸出寫入文件
事情很簡單。我有以下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
謝謝,它肯定有效。我沒有提到我在for循環中有這個if語句的事實,並且出於某種原因,我不認爲直接在for循環中包含變量。我現在試了一下,完美無瑕! – Andy
很高興幫助。注意,我在'echo'語句中添加了'>>',所以您將追加到輸出文件,而不是每次循環都覆蓋它。 – jkdba
您可以使用'echo「$ {RevLookup:-NXDOMAIN}」>>/root/IP'而不是'if'語句。 – chepner