LINUX.ORG.RU

Выполнение команды AWK с переменной

 


1

1

Доброго дня

необходимо стрельнуть дочерние процессы тут я определяю PID процесс, дочерние процессы которого хочу стрельнуть export pids=9261

вот так работает

ps -ef | awk '$3~/9261/{print}' | grep -v grep | awk '{print $2}'

так ничего не возвращает

ps -ef | awk '$3~/$pids/{print}' | grep -v grep | awk '{print $2}'

при попытке обернуть в двойные кавычки - получили ошибку

ps -ef | awk "$3~/$pids/{print}" | grep -v grep | awk '{print $2}'

ошибка

awk: ~/9261/{print}

awk: ^ syntax error



Последнее исправление: mouserok (всего исправлений: 3)

Мети дворы. А в нерабочее время продолжай наблюдения и держи нас в курсе.

anonymous
()

RTFM?

ps -ef | awk '/7099/ {print $3}'
5182
20442
leonidko ★★★★
()

В двойных кавычках происходит подстановка переменных. $3 тебе shell заменяет на пустую строку.

Сравнивать pid-ы по регулярке очень опасно.

Почему не использовать awk -v «X=$pid» awk '$3 == X{print}' ?

pgrep не хочешь использовать? Он умеет показывать дочерние процессы.

vel ★★★★★
()
Ответ на: комментарий от vel

необходимо стрельнуть дочерние процессы

pgrep

Тогда уж сразу pkill

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.