Bash スクリプトでファイルにヒアドキュメントを書き込むにはどうすればいいですか? 質問する

Bash スクリプトでファイルにヒアドキュメントを書き込むにはどうすればいいですか? 質問する

Bash スクリプトでヒアドキュメントをファイルに書き込むにはどうすればいいですか?

ベストアンサー1

読む上級 Bash スクリプト ガイド — 第 19 章 ヒア ドキュメントそしてBash リファレンスマニュアル — リダイレクト: ヒアドキュメント

以下は、内容をファイルに書き込む例です。/tmp/yourfilehere

cat << EOF > /tmp/yourfilehere
These contents will be written to the file.
        This line is indented.
EOF

最後の「EOF」(LimitString)の単語の前には空白があってはならないことに注意してください。空白がLimitStringあると が認識されないことを意味します。

シェル スクリプトでは、コードを読みやすくするためにインデントを使用する場合がありますが、これにより、ヒア ドキュメント内のテキストがインデントされるという望ましくない効果が生じる可能性があります。この場合、(<<-の後にダッシュが続く ) を使用して先頭のタブを無効にします (これをテストするには、実際のタブ文字をここでは印刷できないため、先頭の空白をタブ文字に置き換える必要があることに注意してください)。

#!/usr/bin/env bash
    
if true ; then
    cat <<- EOF > /tmp/yourfilehere
    The leading tab is ignored.
    EOF
fi

テキスト内の変数を解釈したくない場合は、一重引用符を使用します。

cat << 'EOF' > /tmp/yourfilehere
The variable $FOO will not be interpreted.
EOF

heredoc をコマンド パイプライン経由でパイプするには:

cat <<'EOF' |  sed 's/a/b/'
foo
bar
baz
EOF

出力:

foo
bbr
bbz

...または、次のコマンドを使用してヒアドキュメントをファイルに書き込みますsudo:

cat <<'EOF' |  sed 's/a/b/' | sudo tee /etc/config_file.conf
foo
bar
baz
EOF

おすすめ記事