Как использовать pgrep в, колотят сценарий правильно?

perl -F= -lane '$v{$F[0]}=$F[1]; if ($F[0] eq "DATE") {$v{CURRENT_VERSION} eq $v{NEW_VERSION} ? print $v{NEW_VERSION}, " ", $v{DATE} : exit(1)}'

Или, все еще острота, но читаемый

perl -F= -lane '
    $v{$F[0]} = $F[1];
    if ($F[0] eq "DATE") {
        $v{CURRENT_VERSION} eq $v{NEW_VERSION} 
            ? print $v{NEW_VERSION}, " ", $v{DATE} 
            : exit(1)
    }' << END
CURRENT_VERSION=223.3.12.4.5.3
NEW_VERSION=223.3.12.4.5.3
DATE=17.3.2013
END

выводы

223.3.12.4.5.3 17.3.2013
6
06.11.2014, 05:39
2 ответа

Проблема в том, что прямой вызов делает сценарий имени названия команды, см.

cat /proc/$PID/comm

, что вызывает PGREP , чтобы соответствовать. Если вы названо через Bash , то имя команды - «Bash».

вместо этого используйте

pgrep --exact zeal

.

3
27.01.2020, 20:28

Длинный вариант --exact, предложенный в ответе Hauke, не работает на некоторых системах. Вместо него можно использовать эквивалентный короткий вариант -x.

#!/bin/bash

if pgrep -x "zeal" > /dev/null
then
    echo "Running"
else
    echo "Stopped"
fi
3
27.01.2020, 20:28

Теги

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