我如何檢查腳本中的主機命令是否獲得有效的 ip

我如何檢查腳本中的主機命令是否獲得有效的 ip

假設我們只有 1 個參數

host $1

我如何檢查上述命令是否會給我答案或:

Host $1 not found (NXDOMAIN) 

我不想顯示未找到的錯誤,只想顯示-

答案1

host如果無法解析您的輸入,將退出 1,因此您可以使用 if 建構:

if ! host "$1" | grep -v 'not found'; then
  printf '%s\n' '-'
fi

我們用來!測試命令是否失敗(因為我假設您只想在命令通過時正常列印輸出)。 將錯誤host發送not found到 stdout 而不是 stderr,因此我們不能只是隱藏 stdout。這就是為什麼我將主機命令通過管道傳遞到此命令grep -v 'not found'將隱藏未找到的錯誤(如果存在)並且仍然退出 1,從而導致 if 構造列印-。如果沒有找到not found就會退出 0。

答案2

退出狀態就夠了嗎?$?即使您使輸出靜音,您也可以合併上一個指令的退出狀態。對於host退出狀態,0 表示成功,1 表示錯誤

[17:54] [ws ~] $ host 127.0.0.112 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
1
[17:54] [ws ~] $ host 127.0.0.1 1>&2 >/dev/null
[17:54] [ws ~] $ echo $?
0

相關內容