`cat EOF`と`cat EOT`の違いは何ですか、いつ使うべきですか?

`cat EOF`と`cat EOT`の違いは何ですか、いつ使うべきですか?

cat > /path/to/file << EOFBashスクリプトで1つのファイルに複数行を印刷するときは、次のように使い慣れています。会社の前のコードをチェックして、よく知られたコードの代わりにcat EOTディレクティブを見つけました。cat EOF時間代わりにF結局)好奇心が私に尋ねた。

すばやく調査を行い、見つけたものこれは別の質問ですしかし、それは私が知りたいこととは関係がないと思います。

次のコードでいくつかのテストを行いました。

password=hello
cat > ./hello.txt << EOT
authentication {
    auth_type PASS
    auth_pass $password
  }
EOT

EOF私が得た出力は代わりに使用するのとまったく同じですEOT。予想通り、出力は次のようになります。

root@test_VM:~# bash test.sh && cat hello.txt

authentication {
    auth_type PASS
    auth_pass hello
  }

質問は次のとおりです。

  1. EOTこれらを使うとの違いは何ですかEOF
  2. いつ他のものを使うべきですか?

ベストアンサー1

これら2つの文字列または他の文字列の間に違いはなく、特別な意味もありません。これは任意のターミネータにすぎないので、必要なほとんどすべての文字列を使用できます。

もちろん、データ自体には対応する特定の行を含めることはできません。したがって、データに異なるhereドキュメントを含むシェルスクリプトなどが含まれている場合は、両方のドキュメントで異なるターミネータを使用する必要があります。一種の説明文字列を使用すると、将来のスクリプト読者に役立つ可能性があります。

例えば

cat > test.sh <<END_OF_SCRIPT
cat <<EOF
hello
EOF
END_OF_SCRIPT

test.shシェルを介して実行されたときに生成される印刷hello

ただし、here 文書を開始する行に終端子を引用すると違いはありますが、here document データの拡張を妨げることになります。これにより、$i変数の値が代わりに印刷されます。

cat << 'EOF'
$i
EOF

また見なさい:

おすすめ記事