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

Bin*_* H. 1 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
Run Code Online (Sandbox Code Playgroud)

我不明白!之前如何在nc这里工作。谁能帮忙解释一下?

谢谢

Ame*_*hel 5

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

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

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

您可能希望对本交互式教程和Wikibook有所了解。