Что это "!" в то время как! нк ...; делать...; сделано значит - PullRequest
0 голосов
/ 09 ноября 2018

Я довольно новичок в 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 голосов
/ 09 ноября 2018

Здесь ! - это ключевое слово (спасибо пользователю 1934428 за исправление), которое выполняет операцию НЕ.

Если команда nc -z "$host" "$port" не была выполнена успешно, она вернула бы «ложь» (то есть ненулевое значение). Следовательно, ! [nc command] вернул бы "истину" (то есть ноль).

Так что это похоже на то, что «пока эта команда nc не выполнена, выполните цикл. После десяти попыток ($j больше или равно 10) сдавайтесь».

Возможно, вы захотите взглянуть на это интерактивное учебное пособие и на этот Wikibook .

...