No dirijo nada a xargs


14

Tengo un script que en algunas circunstancias puede no tener nada en stdout. Al final del guión, paso las líneas que tengo a otro comando usando xargs. Mi problema es que, cuando no hay nada en stdout, recibo el típico mensaje de error "Uso: programa arg1 arg2".

¿Cómo puedo evitar esto?


8
Mueva su "EDITAR" en una respuesta y acepte su propia respuesta. De esta manera, sus descubrimientos serán útiles para otras personas. meta.unix.stackexchange.com/questions/809/…
andcoz

1
No tenía suficientes puntos en ese momento. Lo hare ahora.
Richard

Respuestas:


13

Necesita una -ru --no-run-if-emptyopciones.

Tenga en cuenta que este comportamiento particular es difícil de hacer multiplataforma. Versiones BSD de xargsejecución con -rpor defecto. La versión de GNU lo necesita. La versión de FreeBSD xargsignora el -rindicador de compatibilidad con GNU. La versión de Mac OS X ni siquiera acepta la bandera y arroja un error illegal option.

A continuación, puede optar por utilizar una detección de sistema operativo basada en $OSTYPEescribir un script multiplataforma. Aún mejor, trate de detectar el comportamiento de xargssí mismo. Ejecútelo con -ry si eso falla (código de estado> 0), ejecútelo sin -r.


3

Una lección de por qué deberías leer las páginas man ...

Las banderas -ro --no-run-if-emptyson mi amigo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.