Мне нужно знать, сколько процессов запущено для конкретной задачи (например, количество котов Apache), и если оно равно 1, распечатать PID. В противном случае распечатайте сообщение.
Мне нужно это в скрипте BASH, теперь, когда я выполняю что-то вроде:
result=`ps aux | grep tomcat | awk '{print $2}' | wc -l`
Количество элементов присваивается результату. Ура! Но у меня нет PID. Однако, когда я пытаюсь выполнить это как промежуточный шаг (без wc), я сталкиваюсь с проблемами. Так что, если я сделаю это:
result=`ps aux | grep tomcat | awk '{print $2}'`
Любые попытки изменить результат переменной просто не работают. Я пробовал set и tr (заменить пробелы на разрывы строк), но я просто не могу получить правильный результат. В идеале я хотел бы, чтобы переменная result представляла собой массив с PID в качестве отдельных элементов. Тогда я могу видеть размер, элементы, легко.
Кто-нибудь может подсказать, что я делаю не так?
Спасибо,
Фил
Обновление:
В итоге я использовал следующий синтаксис:
pids=(`ps aux | grep "${searchStr}"| grep -v grep | awk '{print $2}'`)
number=${#pids[@]}
Ключ заключался в том, чтобы заключить в скобки команды, помеченные галочкой. Теперь переменная pids является массивом и может запрашивать длину и элементы.
Спасибо и Чоробе, и Димитру за их предложения и помощь.