Ich habe ein Skript, das unter Umständen nichts auf stdout hat. Am Ende des Skripts übergebe ich die Zeilen, die ich habe, mit xargs an einen anderen Befehl. Mein Problem ist, wenn es nichts auf stdout gibt, erhalte ich die typische Fehlermeldung "Verwendung: Programm arg1 arg2".
Wie kann ich das vermeiden?
Antworten:
Sie benötigen eine
-r
oder--no-run-if-empty
Optionen.Denken Sie daran, dass dieses spezielle Verhalten schwer plattformübergreifend ist. BSD-Versionen
xargs
laufen-r
standardmäßig mit. GNU-Version braucht es. Die FreeBSD-Version vonxargs
ignoriert das-r
Flag für die Kompatibilität mit GNU. Die Mac OS X-Version akzeptiert nicht einmal das Flag und gibt einen Fehler ausillegal option
.Sie können dann eine Betriebssystemerkennung verwenden, die darauf basiert
$OSTYPE
, ein plattformübergreifendes Skript zu schreiben. Versuchen Sie noch besser, das Verhalten von sichxargs
selbst zu erkennen . Führen Sie es mit aus,-r
und wenn dies fehlschlägt (Statuscode> 0), führen Sie es ohne aus-r
.quelle
Eine Lektion, warum Sie die Manpages lesen sollten ...
Die
-r
oder--no-run-if-empty
Fahnen sind mein Freund.quelle