Xargs'a hiçbir şey borulama


14

Bazı durumlarda stdout üzerinde hiçbir şey olmayabilir bir komut dosyası var. Betiğin sonunda, sahip olduğum satırları xargs kullanarak başka bir komuta iletiyorum. Benim sorunum, stdout üzerinde hiçbir şey olmadığında, tipik "Kullanım: program arg1 arg2" hata iletisini alıyorum.

Bundan nasıl kaçınabilirim?


8
Cevabınızı "DÜZENLE" olarak taşıyın ve kendi cevabınızı kabul edin. Bu şekilde keşifleriniz diğer kişiler için faydalı olacaktır. meta.unix.stackexchange.com/questions/809/…
andcoz

1
O sırada yeterli puan yoktu. Şimdi yapacağım.
Richard

Yanıtlar:


13

Bir -rveya --no-run-if-emptyseçeneklere ihtiyacınız var .

Bu özel davranışın platformlar arası yapmanın zor olduğunu unutmayın. BSD sürümleri varsayılan olarak xargsile çalıştırılır -r. GNU sürümü buna ihtiyaç duyar. FreeBSD sürümü GNU ile uyumluluk için bayrağını xargsyok sayar -r. Mac OS X sürümü bayrağı kabul etmez ve bir hata atar illegal option.

Ardından, $OSTYPEplatformlar arası komut dosyası yazmak için bir işletim sistemi algılaması kullanmayı seçebilirsiniz . Daha da iyisi, xargskendi davranışını tespit etmeye çalışın . İle çalıştırın -rve başarısız olursa (durum kodu> 0), olmadan çalıştırın -r.


3

Adam sayfalarını neden okumalısınız?

-rVeya --no-run-if-emptybayrakları benim arkadaşımsın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.