Для процессов Java используйте команду jps. Это дало бы больше информации, имеющей отношение к среде Java процесса Java.
Решение так просто, я уверен, что Вы будете все находить это забавным.
Никакая потребность быть рассерженные деталями синтаксиса отрицания, просто используйте until
вместо while
.
Для сравнения строки нужно использовать !=
вместо !=~
.
От 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
$