コマンドライン:<<代わりに<<<

コマンドライン:<<代わりに<<<

コマンドmd5sum <<< 'ddd' (出力d6d88f2e50080b9602da53dac1102762 -)が正しいがmd5sum << 'ddd'正確ではないのはなぜですか?

どういう意味ですか<<<

答え1

「ここの文字列」を起動します<<<。文字列が拡張され、プログラムの標準入力に供給されます。 (あなたの場合、拡張はあまり発生しません。)

echo ddd | md5sum

一方、<<ここから文書を始めてください。次のすべての行(マーカーを含む行まで)はdddプログラムへの入力を構成します。 (データに表示される可能性の低いマーカーを使用する必要があります。)次のようにすると、上記と同じ効果が得られます。

md5sum <<END
ddd
END

<<ENDとの間には1つの違いがあります<<'END'。引用符がない場合は、ここのドキュメントのすべての変数、エスケープシーケンスなどが通常どおり拡張されます。

答え2

<<<紹介したここにある文字列: 次の文字列が<<<コマンドの入力として渡されます。これはByron RakitzisrcのUnix(Plan 9シェル)実装に由来し、zsh、ksh93、mksh、yash、bashにも存在します。

<<紹介したここのドキュメント:シェルスクリプトの後続の行はコマンドへの入力として渡され、次の文字列<<はターミネータです。ここにあるドキュメントは、すべてのBourneスタイルのシェル(Bourne、POSIX、ash、bash、ksh、zshなど)、Cスタイルシェル(csh、tcsh)、およびPlan 9シェルから派生したシェル(rc、es、アカンガ)です。

関連情報