Ища способ вызывать более одной команды в однострочнике xargs, я нашел рекомендацию в findutils для вызова оболочки из xargs, например:
$ find ... | xargs sh -c 'command $@'
Самое смешное, что если я использую xargs вот так, по какой-то причине он пропускает первый аргумент:
$ 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
Что-то не так с моей версией оболочки или xargs? Эта документация неточная?
Использование xargs (GNU findutils) 4.4.2 и GNU bash, версия 4.3.11 (1) -релиз .
move
в этом примере документы ставятся в конце! Я должен был прочитать более внимательно ... Спасибо! =)Это не так. Bash назначает первый аргумент $ 0:
$@
расширяется до$1
$2
$3
.... Следовательно, значение$0
не входит в$@
.источник