Respuestas:
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh"
La parte difícil es que xargs realiza una invocación de subshell implícita. Aquí se invoca sh explícitamente y la tubería no se convierte en parte del transportador principal
cat foo.bar | wc -lycat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
-Ilugar de -J; no hay -Jopción para
xargstiene una -Jopción que es equivalente a la -idel linuxxargs
-Jno está definido en POSIX pero -Ies y tiene un uso diferente al de GNU.)
Si desea procesar todas las líneas de foo.txt, deberá usar un bucle. Use ¶ poner el proceso en segundo plano
while read line; do
echo $line | bar.sh &
done < foo.txt
Si su entrada contiene espacios, configure temporalmente el separador de campo interno en la nueva línea
# save the field separator
OLD_IFS=$IFS
# new field separator, the end of line
IFS=$'\n'
for line in $(cat foo.txt) ; do
echo $line | bar.sh &
done
# restore default field separator
IFS=$OLD_IFS
xargsOP utilizado.