ヒアドキュメントで使用する「End of File」というフレーズはどこから生まれましたか?
something <<EOF
something else 1
something else 2
...
EOF
非直感的な制限文字列を正当化する歴史があると思いました.ウィキペディアの記事を読むだけでは十分ではありませんでした.ストリームとブロックがヒアドキュメントを構築するためにより一般的に使用されているのに、なぜ「ファイル」はまだプログラムに浸透しているのでしょうか?
これは、すべてがファイルである Unix の伝統に由来します。このコンテキストでの「ファイル」は、「ディスクファイル」を意味するものではなく、関連するメタデータを必ずしも暗示するものでもありません。現在「ストリーム」と呼ばれる傾向にあるものにかなり近いものを意味します。せいぜい、「ファイル」は「ファイル記述子によってアクセスされるもの」です。つまり、生成するプロセスの STDIN はfileであり、ヒアドキュメントの EOF はその終わりを示します。
「ファイルの終わり」を表す EOF は、ファイルの終わりに達したことを示すために、プログラムでファイルを読み取るときに返されるマーカーまたは例外の名前として伝統的に使用されてきました。これは非常に古い用法です。
したがって、ここにドキュメントを記述し、その末尾を示すトークンが必要な場合 (これは偶発的に発生する可能性は低いはずです)、「EOF」というフレーズを使用して end-ファイル マーカー。これは非常に頻繁に使用されているため、EOF をそのように考えることにまだ慣れていない人でも、ヒア ドキュメントの使用方法を学習しているときに例で使用されているのを目にするため、取り上げられます。そして、使用法が伝播します。
それはただのコンベンションです。シェルスクリプトでは、ほとんど何でも使用できます。
cat <<stackoverflow
something else 1
something else 2
...
stackoverflow
inbash
は、 と言ったのと同じことを行いEOF
ます。