複数のヒアドキュメントを使用して、bashのコマンドに入力を提供できますか?
$ cat <<<foo <<<bar
bar
$ cat <<EOF1 <<EOF2
> foo
> EOF1
> bar
> EOF2
bar
明らかに、どちらの場合でも、2番目のhere-docはstdinとして使用され、最初の参照を置き換えます。echo
代わりにs を使用するソリューションですか?
$ cat <(echo -n foo) <(echo bar)
foobar
また、何らかの理由で、組み合わせを使用してもうまくいきませんでした。どうしてですか?
$ cat <<<foo <(echo bar)
bar
$ cat <(echo -n foo) <<<bar
foo
ヒアドキュメントを1つに結合するのではなく、2つのヒアドキュメントを使用するという事実の背後にある理由はありますか?
—
豆14
@beans実際に
—
スパラフーク
paste
、ダミーの入力でテストするときにそれに遭遇しました。私は他のいくつかのシナリオを考えることができると思います。いくつかの変数に事前に操作されたテキストを含むスクリプトがあった場合、たとえば、ファイルのみを受け取るコマンドで両方に何かをしたいと思うかもしれませんdiff
。
別のユースケース(シェルスクリプトを作成するためにhere-docsを使用してこれを見つけました):変数展開のある数行と、それ以外の数行が必要です
—
トビー・スパイト
cat <<EOF1 <<"EOF2"
。