Auf der Suche nach einer Möglichkeit, mehr als einen Befehl in einem xargs- Einzeiler aufzurufen , fand ich in findutils die Empfehlung, die Shell von xargs wie folgt aufzurufen :
$ find ... | xargs sh -c 'command $@'
Das Lustige ist, wenn ich solche Xargs benutze, überspringt es aus irgendeinem Grund das erste Argument:
$ seq 10 | xargs bash -c 'echo $@'
2 3 4 5 6 7 8 9 10
$ seq 10 | xargs -n2 bash -c 'echo $@'
2
4
6
8
10
Stimmt etwas mit meiner Shell- oder Xargs-Version nicht? Ist diese Dokumentation ungenau?
Verwenden von xargs (GNU findutils) 4.4.2 und GNU bash, Version 4.3.11 (1) .
move
am Ende des Beispiels! Ich hätte genauer lesen sollen ... Danke! =)Das tut es nicht. Bash weist $ 0 das erste Argument zu:
$@
erweitert auf$1
$2
$3
.... Folglich ist der Wert von$0
nicht in enthalten$@
.quelle