ps -ef | while read line; do
    for i in $line; do
        if [ $i = 'bash' ]; then
            echo $line;
        fi;
    done;
done;
unset i;

Команда выполняется правильно, отображая процессы Bash, но создается и отображается дополнительный процесс Bash. Я надеюсь, что есть что-то сделать внутри проверки if . Я попытался запустить его с / без одинарных / двойных кавычек как для $i и для bash внутри условия if . Процесс все еще создается и показывается. Я мог бы использовать grep чтобы получить вывод, но хотел попробовать это таким образом.

Пожалуйста поправьте меня.

1 ответ1

1

Дополнительный процесс создается каналом.

Для получения дополнительной информации прочитайте это очень хорошее объяснение bash и дерева процессов.

Обратите внимание, что вывод ps не предназначен для разбора. При попытке разобрать ps вам, скорее всего, лучше использовать pgrep .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .