1. ホーム
  2. bash

[解決済み] Bashスクリプトでファイルへのheredocを書き込むには?

2022-03-22 01:40:42

質問

Bashスクリプトでここにあるドキュメントをファイルに書き込むにはどうしたらいいですか?

どのように解決するのですか?

Bashスクリプトの上級者向けガイドを読む 第19章. ここでのドキュメント .

のファイルに書き出す例です。 /tmp/yourfilehere

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

最後の 'EOF' に注意してください ( LimitString )の前に空白があってはいけないということです。 LimitString は認識されない。

シェルスクリプトでは、コードを読みやすくするためにインデントを使用することがありますが、この場合、here文書内のテキストもインデントされるという好ましくない結果になることがあります。このような場合は <<- (その後にダッシュを付ける)で先頭のタブを無効にする( これをテストするためには 先頭の空白をタブ文字に置き換えます。 というのは、ここでは実際のタブ文字を印刷することができないからです)。

#!/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