Baris pertama:
echo $(ps | grep $PPID) | cut -d" " -f4
mengatakan:
- Eksekusi
ps | grep $PPID
dalam subkulit -
Kembalikan hasilnya - yang akan menjadi seperti ini:
3559 pts/1 00:00:00 bash
dan kemudian gunakan keluaran itu sebagai parameter pertama gema - yang, dalam praktiknya, berarti gema keluaran saja
- Kemudian jalankan
cut -d" " -f4
pada 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$PPID
berisi angka, jadi tidak akan pernah menjadips
. Jadi, grep tidak mengembalikan apa pun - Eksekusi
cut -d" " -f4
dengan 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. :-)