Bir komut dosyasını yürüten kabuğun adını almaya çalışıyorum.Boru çıkışını kesmek
echo ps | grep $PPID | cut -d" " -f4
değil iken
Neden
echo $(ps | grep $PPID) | cut -d" " -f4
çalışır?
Bir komut dosyasını yürüten kabuğun adını almaya çalışıyorum.Boru çıkışını kesmek
echo ps | grep $PPID | cut -d" " -f4
değil iken
Neden
echo $(ps | grep $PPID) | cut -d" " -f4
çalışır?
nedeni
echo ps
sadece dize ps
yazdırır olmasıdır; ps
programını çalıştırmaz. komutadan düzeltilmiş versiyonu olacaktır:
ps | grep $PPID | cut -d" " -f4
Düzenlendi eklemek için: paxdiablo ps | grep $PPID
$(...)
sonucu beri echo $(ps | grep $PPID)
olarak daraltılmış alacak bir çok bosluk (içerdiğini işaret, bu çift olmadığı zaman -quotes, whitespace tarafından ayrı argümanlara bölünür ve daha sonra echo
tüm argümanlarını boşluklarla ayrılmış olarak çıkarır).
ps | grep $PPID | tr -s ' ' | cut -d' ' -f5
ya da sadece genel olarak başlangıçta ne vardı sopa ile: Bu sorunu gidermek için, tekrarlanan boşluk "sıkmak" için tr
kullanabilirsiniz. :-)
sadece echo ps
kendi başına çalıştırırsanız Bence, sen boru çalışmıyor neden görürsünüz:
$ echo ps
ps
Bunun yerine, $0
kontrol edin. Bir oturum açma kabuk bağlıysa, -bash
veya bash
olabilir. (Peki, herhangi bir kabuk - sadece bash
- ama kabuk bir giriş kabuğu ise tire eklenir.)
ilk satırı:
echo $(ps | grep $PPID) | cut -d" " -f4
diyor ki:
İade çıkış içinde ps | grep $PPID
Yürütme - Böyle bir şey olacaktır:
3559 pts/1 00:00:00 bash
ve sonra bu çıktıyı yankı ilk parametresi -
İkinci komut bu durumda size komut adını verir - pratikte, sadece
cut -d" " -f4
çalıştırmak çıktı yankı demektir: echo ps | grep $PPID | cut -d" " -f4
diyor ki:
ps
$PPID
için bu dize Grep - $PPID
bir sayı içermediği için bu hiçbir zaman bir şey döndürmeyecek, bu yüzden asla ps
olmayacaktır. (| Grep $ PPID ps) | $ başka bir şey değildir, bu yüzden yankı, Nedense hiçbir şey
olsun - Böylece, grep şey
cut -d" " -f4
Yürütme döndürür cut -d "" -f4 bana "bash" verirken ps | grep $ PPID | cut -d "" -f4 bana boş bir alan veriyor – ZPSTam olarak değil. İlk versiyonda daraltma alanlarının ekstra etkisi var. – paxdiablo
Awwwww haklısın! teşekkürler – ZPS