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

One Solution collect form web for “Как установить вывод heredoc в локальную переменную”

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

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

  • Как разбить массив в наборе из пяти файлов и загрузить их параллельно?
  • Извлечение запросов из файла журнала, которые не включают запрещенные строки
  • Массивы в Unix Bourne Shell
  • / bin / etc / lib64 / root / sbin удалены или перемещены папкой mv / * / *, в то время как su
  • Удалите много файлов из папки
  • очистить tmpfs в моем случае
  • Есть ли простой способ создать оболочку sudo?
  • Объединение двух переменных приводит их в действие в Windows
  • Mac OS X сочетает cp и cat, чтобы последовательно копировать и переименовывать файлы в списке
  • Синтаксическая ошибка: ожидаемый операнд (токен ошибки равен «= 1 +»)
  • Исходный файл .bashrc в bash глобально
  • Linux и Unix - лучшая ОС в мире.