Wpis z mikrobloga

[[ ! $(firewall-cmd --list-ports | tr ' ' '\n' | grep -q "^9000/tcp") ]] && echo OK
Jeśli grep złapie zwraca 0. Jeśli nie zwarca 1.
Można też nie negować i użyć ||
Chyba, że koniecznie chcesz coś porównywać.
  • Odpowiedz
czemu nie zadziała "(^| )?9000/tcp" skoro na normalnych regexach działa... regexr.com/53ekm


@Wykopowiedz: sprawdziłem i wiem czemu... Bo to błędny regex. Robisz alternatywę na ^ lub ' ' i dajesz warunek, że wcale nie musi go tam być. Więc jest łapane "^9000" lub "* 9000" lub "*9000".

Prawidłowy regex to: (^| )9000/tcp ? bo chesz łapać tylko spację lub tylko początek linii.
  • Odpowiedz
A nie lepiej dać spację przed 9000 zamiast się bawić w regexpy?


@RocketMann112: pomijając fakt czy regexpy tu mają sens czy nie to z tego co op napisał wcale nie musi być spacji na początku więc i tak będziesz musiał wrzucić regex w grepa.

@Wykopowiedz: Wyjaśnienie jeszcze do tego co napisałem wyżej. Miałem na
  • Odpowiedz