Как установить вывод heredoc в локальную переменную

Я пытаюсь в heredoc установить свой вывод на локальную переменную следующим образом:

REMOTE_OUTPUT=$(ssh remote@server /bin/bash << EOF find my/path/ -type f -not -path my/path/*/ -type f -mtime -0 | while read filename; do if grep "ERROR" $filename; then filenamebase=$(basename "$filename") echo -e "\n----------------------------------------------------------\n\n$filenamebase failure:\n" grep -n "ERROR" "$filename" | sed G fi done EOF) 

Но переменная остается нулевой, хотя цикл find & grep верен и должен действительно возвращать результат.

(В противном случае мне также было бы интересно записать вывод heredoc в локальный файл.)

Вам нужно EOF маркер EOF , например <<\EOF или <<'EOF' чтобы остановить переменную $filename от оценки до ее передачи на удаленный. Вы можете увидеть эффект с say /bin/bash -v вместо /bin/bash .

Я также должен был иметь фактический маркер EOF на отдельной строке, с финалом ) на следующей строке.