J'ai un script qui peut, dans certaines circonstances, ne rien avoir sur stdout. À la fin du script, je passe les lignes que j'ai à une autre commande en utilisant xargs. Mon problème est, quand il n'y a rien sur stdout, j'obtiens le message d'erreur "Usage: program arg1 arg2" typique.
Comment puis-je éviter ça?
Réponses:
Vous avez besoin d'une
-r
ou d'--no-run-if-empty
options.Gardez à l'esprit que ce comportement particulier est difficile à réaliser sur plusieurs plates-formes. Versions BSD de
xargs
run with-r
par défaut. La version GNU en a besoin. La version FreeBSD dexargs
ignore le-r
drapeau pour la compatibilité avec GNU. La version Mac OS X n'accepte même pas l'indicateur et génère une erreurillegal option
.Vous pouvez alors choisir d'utiliser une détection de système d'exploitation basée sur
$OSTYPE
pour écrire un script multiplateforme. Encore mieux, essayez de détecter le comportement dexargs
lui - même. Exécutez-le avec-r
et si cela échoue (code d'état> 0), exécutez-le sans-r
.la source
Une leçon sur la raison pour laquelle vous devriez lire les pages de manuel…
Le
-r
ou les--no-run-if-empty
drapeaux sont mon ami.la source