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?
Respuestas:
Necesita una
-r
u--no-run-if-empty
opciones.Tenga en cuenta que este comportamiento particular es difícil de hacer multiplataforma. Versiones BSD de
xargs
ejecución con-r
por defecto. La versión de GNU lo necesita. La versión de FreeBSDxargs
ignora el-r
indicador de compatibilidad con GNU. La versión de Mac OS X ni siquiera acepta la bandera y arroja un errorillegal option
.A continuación, puede optar por utilizar una detección de sistema operativo basada en
$OSTYPE
escribir un script multiplataforma. Aún mejor, trate de detectar el comportamiento dexargs
sí mismo. Ejecútelo con-r
y si eso falla (código de estado> 0), ejecútelo sin-r
.fuente
Una lección de por qué deberías leer las páginas man ...
Las banderas
-r
o--no-run-if-empty
son mi amigo.fuente