Как читать результат с первого шага параллели?

ВОПРОС

В bash вы можете передавать данные с шага на шаг по данным трубопровода:

program1 | program2 | program3 | ... 

Или вы можете сделать это с помощью переменных (в зависимости от того, как работает каждая программа):

 RES1=$(program1) RES2=$(program2 $RES1) ... 

Я ищу параллель таких параллельных данных.

ПРИМЕР

Я пытаюсь преобразовать свой «линейный» сценарий в удивительную параллель (этот инструмент по-прежнему творит чудеса для меня: -D), но у меня есть проблема с чтением и использованием вывода с первого шага. Оригинальная версия:

 for fn in $(ls $REV *) do DATA=$(sh script1.sh ${fn}) sh script2.sh $DATA done 

Здесь, как я пытался сделать это с parallel :

 ls $REV * | parallel -j+0 DATA=$(sh script1.sh {}) \; sh script2.sh $DATA 

Однако с помощью этого кода myscript получает некоторые сломанные данные на входе. Версия с удаленным чтением результата и вторым шагом в целом работает:

 ls $REV * | parallel -j+0 sh script1.sh {} 

Итак, как читать результат с первого шага parallel и использовать его в следующих шагах?

ПРОБЛЕМА

Для более легкой отладки, скажем, мой первый скрипт (script1.sh):

 echo "RECEIVED THIS ${1}" 

И главный сценарий:

 ls * | parallel -j+0 RES="$(sh script1.sh {})" 

(Я пропустил скрипт2 здесь, чтобы проверить захват вывода скрипта1). Тогда результатом всего выполнения является следующее:

 /bin/bash: THIS: command not found /bin/bash: THIS: command not found /bin/bash: THIS: command not found ...