什么是“!”在`while! nc ...;做...;完成意思

时间:2018-11-09 00:54:59

标签: bash netcat

我对bash相当陌生,并且遇到了这段代码。

j=0
while ! nc -z "$host" "$port"; do
  j=$((j+1))
  if [ $j -ge 10 ]; then
    echo >&2 "$host:$port not reachable, giving up"
    exit 1
  fi
done

我无法理解!之前的nc在这里的工作方式。谁能帮忙解释一下?

谢谢

1 个答案:

答案 0 :(得分:5)

在这里,!是执行NOT操作的关键字(感谢user1934428的更正)。

如果命令nc -z "$host" "$port"未成功执行,它将返回“ false”(即非零值)。因此,! [nc command]将返回“ true”(即零)。

因此,就像“ nc命令失败时,执行循环。尝试10次($j大于或等于10)后,放弃”。

您可能希望对此interactive tutorial和此Wikibook有所了解。