Wpis z mikrobloga

#programowanie Uruchamiam w konsoli pewien program, który na wyjściu wyrzuca 2 możliwe wyniki

OK (1 test, 0 assertions)


lub

Tests: 1, Assertions: 0, Errors: 1.


Chciałbym stworzyć narzędzie, które wydobędzie te zmienne przekazywało jako parametry do kolejnego programu uruchamianego z konsoli. Jak to ugryźć (pod opensuse)?
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@snx: np tak:

export PRZYKLAD="OK (1 test, 0 assertions)\nTests: 1, Assertions: 0, Errors: 1."


echo -e $X | sed "s/OK (([0-9]+) test, ([0-9]+) assertions)/OK \1 \2 0/g" | sed "s/Tests: ([0-9]+), Assertions: ([0-9]+), Errors: ([0-9]+)./ERROR \1 \2
  • Odpowiedz
@snx: Np tak.

> echo -e $PRZYKLAD | sed "s/OK (\([0-9]\+\) test, \([0-9]\+\) assertions)/\.\/zabixsender 'OK' \1 \2 0/g" | sed "s/Tests: \([0-9]\+\), Assertions: \([0-9]\+\), Errors: \([0-9]\+\)./\.\/zabixsender 'ERROR' \1 \2 \3/g" | sh


Tylko parametry dostosuj. \1 to pierwsza grupa nawiasow z wzorca, \2 to druga \3
  • Odpowiedz
selenium@linux-voi0:~> phpunit przykladowytest.php | sed "s/OK (([0-9]+) test, ([0-9]+) assertions)/.\/zabix*sender -z pewnastala -k 'przykladowy*test*ok' -o \1/g" | sed "s/Tests: ([0-9]+), Assertions: ([0-9]+), Errors: ([0-9]+)./.\/zabix*sender -z pewnastala -k 'przykladowy*test*fail' -o \3/g" | sh


sh: line 1: PHPUnit: nie znaleziono polecenia


sh: line 3: Cannot: nie znaleziono polecenia
  • Odpowiedz
@snx: no ale zwracasz inne linijki niż tylko "OK ..." albo "Tests ...", i dla nich się wywala, bo nie są obsłużone. Zdecyduj się dla których linijek co chcesz zrobić. Jak mozna zignorować resztę linijek, to możesz dać na początku

| grep 'OK\|Tests' |
  • Odpowiedz