Memipiskan apa pun ke xargs


14

Saya memiliki skrip yang mungkin dalam beberapa keadaan tidak memiliki apa-apa di stdout. Di akhir skrip, saya meneruskan baris yang saya miliki ke perintah lain menggunakan xargs. Masalah saya adalah, ketika tidak ada apa-apa di stdout, saya mendapatkan pesan kesalahan "Penggunaan: program arg1 arg2" yang khas.

Bagaimana saya bisa menghindari ini?


8
Pindahkan "EDIT" Anda dalam jawaban dan terima jawaban Anda sendiri. Dengan cara ini penemuan Anda akan bermanfaat bagi orang lain. meta.unix.stackexchange.com/questions/809/…
andcoz

1
Tidak punya cukup poin saat itu. Akan melakukannya sekarang.
Richard

Jawaban:


13

Anda memerlukan -ratau --no-run-if-emptyopsi.

Perlu diingat bahwa perilaku khusus ini sulit dibuat lintas platform. Versi BSD xargsdijalankan dengan -rsecara default. Versi GNU membutuhkannya. Versi FreeBSD xargsmengabaikan -rflag untuk kompatibilitas dengan GNU. Versi Mac OS X bahkan tidak menerima flag dan melempar kesalahan illegal option.

Anda kemudian dapat memilih untuk menggunakan deteksi OS berdasarkan $OSTYPEuntuk menulis skrip lintas-platform. Bahkan lebih baik, cobalah untuk mendeteksi perilaku xargsitu sendiri. Jalankan dengan -rdan jika itu gagal (kode status> 0), jalankan tanpa -r.


3

Sebuah pelajaran tentang mengapa Anda harus membaca halaman manual ...

The -ratau --no-run-if-emptybendera adalah teman saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.