4

SO を閲覧しているときに、たとえば EOFD が表示されることがあります。

ftp -vn <$hostname> <<EOFD

はい、ご参考までに、Google を試してみましたがうまくいきませんでした。

4

4 に答える 4

5

あなたが参照する質問の文脈では、特別なことを意味するものではなく、ヒアドキュメントEOFDの始まりにすぎません。

Advanced Bash-Scripting Guideから:

ヒアドキュメントは、特別な目的のコードブロックです。I / Oリダイレクトの形式を使用して、コマンドリストをインタラクティブプログラムまたはコマンド(ftp、cat、ex text editorなど)にフィードします。

COMMAND <<InputComesFromHERE
...
...
...
InputComesFromHERE

制限文字列は、コマンドリストを示します(フレーム化します)。<<制限文字列の前に特別な記号があります。stdinこれには、コマンドブロックの出力をプログラムまたはコマンドの出力にリダイレクトする効果があります。これは、に似てinteractive-program < command-filecommand-fileます。

command #1
command #2
...

同等のhere documentものは次のようになります。

interactive-program <<LimitString
command #1
command #2
...
LimitString

limit stringコマンドリストのどこにも発生せず、問題を混乱させないように、十分に珍しいものを選択してください。

そのため、その質問では、作成者は、ftpインタラクティブに使用するかのようにコマンドをに送信していました。

于 2012-04-04T22:48:56.880 に答える
3

これらの検索用語でもう一度お試しください:こちらのドキュメント

于 2012-04-04T22:28:52.677 に答える
3

<<EOFDコンストラクトは、シェル スクリプト (Bourne、bash など、他に何があるかはわかりません) の特別なタイプのリダイレクトであり、次の行が表示されるまで、次の行をストリームとして扱うようにシェルに指示しstdinますEOFD

文字列は任意です - 任意の一意のトークン (または入力ストリームEOFDにない少なくとも 1 つ)。stdin

于 2012-04-04T22:32:59.150 に答える
1

これらの言葉は恣意的であるEOFDのに、慣例ではなくなぜ誰かが書くのでしょうEOFか?

(ちなみに、!文字を使用する伝統もあります:

cat <<!
Hello
world
!

)

EOFDヒア ドキュメントで生成しているテキスト自体がシェル スクリプトであり、それ自体にヒア ドキュメントが含まれていて、これらのヒア ドキュメントが既にEOF区切り文字として使用している場合に役立ちます。

cat <<EOFD
#!/bin/sh
# here doc script
cat <<EOF
Hello
World
EOF
EOFD

:)

于 2012-04-05T01:15:17.033 に答える