GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Xargs:Spielt die Reihenfolge der Optionen eine Rolle?

Geben Sie 0 ein

echo foo | xargs -L 1 -I '{}' echo '{}'

Ausgang 0

foo

Eingabe 1

echo foo | xargs -I '{}' -L 1 echo '{}'

Ausgang 1

{} foo

Warum ändert das Ändern der Reihenfolge der Optionen von xargs die Ausgabe?

Version:xargs (GNU findutils) 4.6.0

Akzeptierte Antwort:

Wenn xargs gegebene Optionen in Konflikt geraten, kann die Reihenfolge von Bedeutung sein.

IEEE Std 1003.1-2008, 2016 Edition/Open Group Base Specifications Issue 7 fügte der Spezifikation von xargs den folgenden Text hinzu:

Das -Ich , -L , und -n Optionen schließen sich gegenseitig aus. Einige Implementierungen verwenden die zuletzt angegebene, wenn mehr als eine in einer Befehlszeile angegeben wird; andere Implementierungen behandeln Kombinationen der Optionen auf unterschiedliche Weise.

Dies codiert das Verhalten vieler Implementierungen von xargs und geht zurück auf die Originalversion in PWB/Unix, auf deren Manpage

steht

Bei Flag-Konflikten (z. B. -l vs. -n ), hat das letzte Flag Vorrang.

In der GNU-Version von xargs, -L deaktiviert alle vorherigen -I Möglichkeit. Also in Ihrem zweiten Beispiel,

echo foo | xargs -I '{}' -L 1 echo '{}'

{} ist nur ein gewöhnliches Argument, das an echo übergeben wird , ohne Ersetzung.

Verglichen mit IEEE Std 1003.1, 2004 Edition/Open Group Base Specifications Issue 6.


Linux
  1. Wie geht Rm -r beim rekursiven Entfernen vor? In welcher Reihenfolge?

  2. Wie findet die automatische Vervollständigung von Registerkarten Optionen zum Vervollständigen?

  3. Warum hat Ifs in `while Ifs=Read..` keine Auswirkung?

  4. Zeile für Zeile im Bash-Skript lesen

  5. können xargs Parameter trennen?

Warum liefert `md5sum` nicht den gleichen Hash wie das Internet?

Was bedeutet Echo $? Tun??

Warum liefert xargs -L das richtige Format und xargs -n nicht?

Die Verwendung von <linux/types.h> in Benutzerprogrammen oder <stdint.h> im Treibermodulcode ... spielt es eine Rolle?

Spielt unter Linux/Unix .tar.gz im Vergleich zu .zip eine Rolle?

Was bedeutet echo $? tun?