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?
Jawaban:
Anda memerlukan
-r
atau--no-run-if-empty
opsi.Perlu diingat bahwa perilaku khusus ini sulit dibuat lintas platform. Versi BSD
xargs
dijalankan dengan-r
secara default. Versi GNU membutuhkannya. Versi FreeBSDxargs
mengabaikan-r
flag untuk kompatibilitas dengan GNU. Versi Mac OS X bahkan tidak menerima flag dan melempar kesalahanillegal option
.Anda kemudian dapat memilih untuk menggunakan deteksi OS berdasarkan
$OSTYPE
untuk menulis skrip lintas-platform. Bahkan lebih baik, cobalah untuk mendeteksi perilakuxargs
itu sendiri. Jalankan dengan-r
dan jika itu gagal (kode status> 0), jalankan tanpa-r
.sumber
Sebuah pelajaran tentang mengapa Anda harus membaca halaman manual ...
The
-r
atau--no-run-if-empty
bendera adalah teman saya.sumber