Инвертируйте условие цикла с условием продолжения в ударе

Для процессов Java используйте команду jps. Это дало бы больше информации, имеющей отношение к среде Java процесса Java.

25
17.03.2013, 16:51
2 ответа

Решение так просто, я уверен, что Вы будете все находить это забавным.

Никакая потребность быть рассерженные деталями синтаксиса отрицания, просто используйте until вместо while.

60
27.01.2020, 19:40

Для сравнения строки нужно использовать != вместо !=~.

От man bash

string1 != string2
          True if the strings are not equal.

Поскольку Вы используете регулярное выражение справа, Вам действительно нужно =~. Вы можете, принял решение инвертировать целое выражение.

while  [[  !( $range =~ ^[0-9]{1,3]}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ) ]]

Пример:

$ bash --version | head -n1
GNU bash, version 4.2.24(1)-release (x86_64-pc-linux-gnu)
$ cat script
range='1'; while [[ !( $range =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ) ]]; do echo "$range NOT OK"; range+='.2'; sleep 1; done
echo "Finished"
$ bash script
1 NOT OK
1.2 NOT OK
1.2.2 NOT OK
Finished
$ 
9
27.01.2020, 19:40
  • 1
    Спасибо за быстрые ответы. Я делал попытку этого перед регистрацией, и она не проверяет правильно. Этому, кажется, нужен ~ для работы правильно также при проверке этого, это ДЕЙСТВИТЕЛЬНО соответствует формату. Проверка –  Synner 16.03.2013, 20:45
  • 2
    @Synner редактирование –  Bernhard 16.03.2013, 20:56
  • 3
    Не работает с bash 4.2.42. Попытка pastebin.com/0vHh5MMB –  manatwork 17.03.2013, 16:51
  • 4
    @manatwork в неинтерактивной оболочке. –  Bernhard 17.03.2013, 17:06
  • 5
    @manatwork Видит мой –  Bernhard 17.03.2013, 17:40

Теги

Похожие вопросы