回答:
<<<
開始「ここに文字列」:文字列が展開され、プログラムの標準入力に供給されます。(あなたの場合、拡張はあまり起こりません。)これは次と同等です:
echo ddd | md5sum
一方、<<
hereドキュメントを開始します。マーカーddd
を含む次の行までのすべてが、プログラムの入力を構成します。(データに表示されそうにないマーカーを使用する必要があります。)上記と同じ効果を得るには、次のようにします。
md5sum <<END
ddd
END
との間に1つの違いが<<END
あり<<'END'
ます:引用符なしでは、ヒアドキュメント内の変数、エスケープシーケンスなどは通常どおりに展開されます。
<<<
here文字列を導入します。その後の文字列<<<
は、コマンドへの入力として渡されます。これは、rc
UnixへのByron Rakitzisの(Plan 9シェル)の移植に由来し、zsh、ksh93、およびbashにも存在します。
<<
ヒアドキュメントを導入します。シェルスクリプトの後続の行はコマンドへの入力として渡され、その後の文字列<<
はターミネータです。ここでのドキュメントは、すべてのBourneスタイルのシェル(Bourne、POSIX、ash、bash、ksh、zshなど)、Cスタイルのシェル(csh、tcsh)、およびPlan 9シェル(rc、es)で機能します。
<<<
はありません。ksh
パスはrc
-> zsh
-> ksh93
->ですbash
(ksh
リリースノートは一度機能を借用したことを認めていますzsh
)。<<
またで働くrc
スタイルシェル
rc
ありzsh
<<<
ますが、rc
「s」には末尾の改行文字が含まれておらず、一時ファイルを使用していません(少なくともLinuxへのポートではパイプと追加プロセスを使用します)。
<<<
、Unixのポートから来ているrc
ように見えrc
ます。
rc
、<<<
(のような<<
)ので、コマンドで使用することができ、一時ファイルを使用してlseek
自分のSTDIN。