Baris pertama:
echo $(ps | grep $PPID) | cut -d" " -f4
mengatakan:
- Eksekusi
ps | grep $PPIDdalam subkulit -
Kembalikan hasilnya - yang akan menjadi seperti ini:
3559 pts/1 00:00:00 bashdan kemudian gunakan keluaran itu sebagai parameter pertama gema - yang, dalam praktiknya, berarti gema keluaran saja
- Kemudian jalankan
cut -d" " -f4pada itu - yang memberi Anda nama perintah dalam hal ini
Perintah kedua:
echo ps | grep $PPID | cut -d" " -f4
mengatakan:
- Echo string
ps - Ambil string itu untuk
$PPID- ini tidak akan mengembalikan apapun, seperti$PPIDberisi angka, jadi tidak akan pernah menjadips. Jadi, grep tidak mengembalikan apa pun - Eksekusi
cut -d" " -f4dengan input dari perintah sebelumnya - yang bukan apa-apa, jadi Anda tidak mendapatkan apa-apa
Alasannya adalah bahwa
echo ps
cukup cetak string ps; itu tidak menjalankan program ps . Versi yang dikoreksi dari perintah Anda adalah:
ps | grep $PPID | cut -d" " -f4
Diedit untuk menambahkan: paxdiablo menunjukkan bahwa ps | grep $PPID termasuk banyak spasi kosong yang akan diciutkan oleh echo $(ps | grep $PPID) (karena hasil dari $(...) , jika tidak dalam tanda kutip ganda, dipisahkan dengan spasi putih menjadi argumen terpisah, lalu echo menampilkan semua argumennya yang dipisahkan oleh spasi). Untuk mengatasinya, Anda dapat menggunakan tr untuk "memeras" spasi berulang:
ps | grep $PPID | tr -s ' ' | cut -d' ' -f5
atau Anda bisa tetap dengan apa yang harus Anda mulai. :-)