heredoc出力をローカル変数に設定する方法

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の出力をローカルファイルに書き込むことにも興味があります。)

ベストアンサー1

EOFたとえば、タグを引用するか、変数がリモート<<\EOFで渡される前に評価されるのをやめる必要があります。<<'EOF'代わりに say を使用して$filename効果を確認できます。/bin/bash -v/bin/bash

EOFまた、実際のマークアップを独自の行に配置し、最後の行を)次の行に配置する必要があります。

おすすめ記事