Причина в том, что
echo ps
просто распечатывает строку ps
; программа не запускается ps
. Исправленная версия вашей команды будет:
ps | grep $PPID | cut -d" " -f4
Отредактировано, чтобы добавить: paxdiablo указывает, что ps | grep $PPID
включает много пробелов, которые будут свернуты на echo $(ps | grep $PPID)
(начиная с результата $(...)
, когда он не в двойных кавычках, разделяется пробелами на отдельные аргументы, а затем echo
выводит все свои аргументы, разделенные пробелами). Чтобы решить эту проблему, вы можете использовать tr
для «сжатия» повторяющихся пробелов:
ps | grep $PPID | tr -s ' ' | cut -d' ' -f5
или вы можете просто придерживаться того, с чего вам пришлось начать. : -)