SO を閲覧しているときに、たとえば EOFD が表示されることがあります。
ftp -vn <$hostname> <<EOFD
はい、ご参考までに、Google を試してみましたがうまくいきませんでした。
SO を閲覧しているときに、たとえば EOFD が表示されることがあります。
ftp -vn <$hostname> <<EOFD
はい、ご参考までに、Google を試してみましたがうまくいきませんでした。
あなたが参照する質問の文脈では、特別なことを意味するものではなく、ヒアドキュメントEOFD
の始まりにすぎません。
Advanced Bash-Scripting Guideから:
ヒアドキュメントは、特別な目的のコードブロックです。I / Oリダイレクトの形式を使用して、コマンドリストをインタラクティブプログラムまたはコマンド(ftp、cat、ex text editorなど)にフィードします。
COMMAND <<InputComesFromHERE ... ... ... InputComesFromHERE
制限文字列は、コマンドリストを示します(フレーム化します)。
<<
制限文字列の前に特別な記号があります。stdin
これには、コマンドブロックの出力をプログラムまたはコマンドの出力にリダイレクトする効果があります。これは、に似てinteractive-program < command-file
いcommand-file
ます。command #1 command #2 ...
同等の
here document
ものは次のようになります。interactive-program <<LimitString command #1 command #2 ... LimitString
limit string
コマンドリストのどこにも発生せず、問題を混乱させないように、十分に珍しいものを選択してください。
そのため、その質問では、作成者は、ftp
インタラクティブに使用するかのようにコマンドをに送信していました。
これらの検索用語でもう一度お試しください:こちらのドキュメント
<<EOFD
コンストラクトは、シェル スクリプト (Bourne、bash など、他に何があるかはわかりません) の特別なタイプのリダイレクトであり、次の行が表示されるまで、次の行をストリームとして扱うようにシェルに指示しstdin
ますEOFD
。
文字列は任意です - 任意の一意のトークン (または入力ストリームEOFD
にない少なくとも 1 つ)。stdin
これらの言葉は恣意的であるEOFD
のに、慣例ではなくなぜ誰かが書くのでしょうEOF
か?
(ちなみに、!
文字を使用する伝統もあります:
cat <<!
Hello
world
!
)
EOFD
ヒア ドキュメントで生成しているテキスト自体がシェル スクリプトであり、それ自体にヒア ドキュメントが含まれていて、これらのヒア ドキュメントが既にEOF
区切り文字として使用している場合に役立ちます。
cat <<EOFD
#!/bin/sh
# here doc script
cat <<EOF
Hello
World
EOF
EOFD
:)