První řádek:
echo $(ps | grep $PPID) | cut -d" " -f4
říká:
- Spustit ps | grep $PPIDv podskořápce
-  Vraťte výstup – který bude vypadat nějak takto: 3559 pts/1 00:00:00 basha poté použijte tento výstup jako první parametr echo - což v praxi znamená pouze echo výstupu 
- Potom spusťte cut -d" " -f4na tom - což vám v tomto případě poskytne název příkazu
Druhý příkaz:
echo ps | grep $PPID | cut -d" " -f4
říká:
- Řetězec ozvěny ps
- Uchopte tento řetězec pro $PPID- toto nikdy nic nevrátí, jako$PPIDobsahuje číslo, takže nikdy nebudeps. Proto grep nic nevrací
- Spustit cut -d" " -f4se vstupem předchozího příkazu - což je nic, takže nedostanete nic
Důvodem je, že
echo ps
 pouze vytiskne řetězec ps; nespustí program ps . Opravená verze vašeho příkazu by byla:
ps | grep $PPID | cut -d" " -f4
 Upraveno za účelem přidání: paxdiablo poukazuje na to, že ps | grep $PPID obsahuje mnoho mezer, které se sbalí o echo $(ps | grep $PPID) (od výsledku $(...) , pokud není ve dvojitých uvozovkách, je rozdělen mezerami na samostatné argumenty a poté echo vypíše všechny své argumenty oddělené mezerami). K vyřešení tohoto problému můžete použít tr pro "zmáčknutí" opakovaných mezer:
ps | grep $PPID | tr -s ' ' | cut -d' ' -f5
nebo můžete zůstat u toho, s čím jste museli začít. :-)