質問: "cat << eof"はbashでどのように機能しますか? プログラムに複数行の入力を入力するためのスクリプトを書く必要がありました(psql)。ちょっとグーグルした後、私は以下の構文がうまくいくのを見つけました:cat << eof | psql ---params begin; `pg_dump ----something` update table .... statement ...; end; eof これは複数行の文字列(begin;からend;までを含む)を正しく構成し、それを入力としてpsqlへのパイプとして渡します。しかし、私はそれがどのように/なぜ動くのかわかりません、何人か説明してもらえますか?主にcat << eofを参照しています。>はファイルに出力し、>>はファイルに追加し、<はファイルから入力を読み取ります。<<は正確に何をしますか?それにmanページはありますか?
回答: 猫の代わりにティーを使う 元々の質問に対する答えとしてではありませんが、とにかくこれを共有したいと思いました。root権限が必要なディレクトリにconfigファイルを作成する必要がありました。その場合、以下は機能しません。$ sudo cat <<eof >/etc/somedir/foo.conf # my config file foo=bar eof リダイレクトはsudoコンテキストの外側で処理されるためです。私は代わりにこれを使ってしまいました:$ sudo tee <<eof /etc/somedir/foo.conf >/dev/null # my config file foo=bar eof