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

  • Запрос терминала перезаписывает текущую строку
  • поиск содержимого файлов, упакованных в zip-файл
  • Динамически читать имя функции bash изнутри функции bash
  • ksh loop: "для dir in find .. do" не работает, в отличие от "для dir in ls .. do"
  • Способ записи нового имени файла на подстановочный знак?
  • Как я могу рекурсивно заменить строку в именах файлов и каталогов?
  • Использование CSV-строки в качестве параметров команды
  • Как написать сценарий оболочки, чтобы при компиляции моей программы на C ++ он поместил двоичный код в двоичный каталог
  • Openssl создает недопустимый код безопасности websocket
  • Передать переменную оболочки как / pattern / to awk
  • Я хочу скопировать удаленный файл txt через SSH, но без использования корневого доступа
  • Linux и Unix - лучшая ОС в мире.