回答:
cat foo.txt | xargs -J % -n 1 sh -c "echo % | bar.sh" トリッキーな部分は、xargsが暗黙的なサブシェル呼び出しを実行することです。ここでshは明示的に呼び出され、パイプは親コンベアの一部になりません
cat foo.bar | wc -lとcat foo.bar | xargs -J % -n 1 sh -c "echo % | wc -l"
                    -I代わりにあなたが意味すると思う-J; -Jxargs にはオプションがありません
                    xargshave -Jオプション-ixargs
                    -JPOSIXでは定義されていません-Iが、GNUとは異なる用途があります。)
                    foo.txtのすべての行を処理する場合は、ループを使用する必要があります。&プロセスをバックグラウンドにするために使用します
while read line; do
   echo $line | bar.sh &
done < foo.txt入力にスペースが含まれている場合、内部フィールド区切り文字を一時的に改行に設定します
# 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     xargs使用したOP のオプションを調べました。