Я выхожу на конечность здесь и понимаю, что это больше похоже на комментарий.
Зачем вам нужен PID команды grep
?
В своем комментарии вы говорите, что хотите сравнить его в цикле с чем-то. Я бы предположил, что это ваша проблема, что цикл будет (иногда) включать не только myproj
, но и пункт о вашей команде grep? Если да, то попробуйте следующее:
for i in `ps -ax | grep -v grep | grep "myproj"`
do
echo $i
done
Переключатель -v
в основном переворачивает картину, так grep -v grep
(или grep -v "grep"
, который, возможно, выглядит немного менее неудобно) будет включать в себя только те строки, которые не содержат строку «Grep» (см. man grep). Обратите внимание, что это может быть слишком неопределенным для некоторых случаев, например, если шаблон, который вы на самом деле ищете, также содержит строку «grep». Например, следующее может не работать так, как вы ожидали: ps -ax | grep -v grep | grep mygrepling
Однако, в вашем конкретном случае, где вы ищете только «myproj», это будет сделано.
Или вы могли бы просто использовать
for i in `ps -ax | grep "my[p]roj"`
do
echo $i
done
Таким образом, нет необходимости знать PID команды Grep, потому что он просто никогда не показывает, как итерации цикла.
Что вы бы описали своего PID, если нашли? К моменту его поступления команда завершена, поэтому PID перестает действовать. –
Предположим, я получу его в цикле для сравнения с некоторым значением? – Cygnus