Как установить вывод 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 в локальный файл.)

  • Как сохранить содержимое переменной после трубы
  • Как изменить пользователя с аутентификацией внутри сценария оболочки
  • Каковы существенные различия между различными раковинами?
  • Как мне регистрировать xargs -0 rm?
  • Сохранять коды выхода при захвате SIGINT и тому подобное?
  • Как вернуть 0, если шаблон сопоставлен с файлом?
  • bash myscript.sh работает в bash, но первая строка: #! / usr / bin / sh
  • найти ближайшую папку соответствия
  • One Solution collect form web for “Как установить вывод heredoc в локальную переменную”

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

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

    Linux и Unix - лучшая ОС в мире.