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