например, используя команду
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
foo.txt
Содержит две строки
foo
bar
Приведенная выше команда ничего не печатает.
например, используя команду
cat foo.txt | xargs -I{} -n 1 -P 1 sh -c "echo {} | echo"
foo.txt
Содержит две строки
foo
bar
Приведенная выше команда ничего не печатает.
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
Сложность в том, что xargs выполняет неявный вызов subshell. Здесь sh вызывается явно и труба не становится частью родительского конвейера
cat foo.bar | wc -l
иcat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-I
вместо-J
; нет-J
возможности для xargsxargs
есть-J
опция, эквивалентная-i
Linux-xargs
-J
не определено в POSIX, но-I
используется и имеет другое назначение, чем GNU.)Если вы хотите обработать все строки файла foo.txt, вам придется использовать цикл. Используйте,
&
чтобы поставить процесс на задний планЕсли ваш ввод содержит пробелы, временно установите внутренний разделитель полей на новую строку
источник
xargs
используемого ОП.