我对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
在这里的工作方式。谁能帮忙解释一下?
谢谢
答案 0 :(得分:5)
在这里,!
是执行NOT操作的关键字(感谢user1934428的更正)。
如果命令nc -z "$host" "$port"
未成功执行,它将返回“ false”(即非零值)。因此,! [nc command]
将返回“ true”(即零)。
因此,就像“ nc
命令失败时,执行循环。尝试10次($j
大于或等于10)后,放弃”。
您可能希望对此interactive tutorial和此Wikibook有所了解。