contentbashのヒアドキュメントを活用するBashヒアドキュメントとは複数行の文字列を簡潔に記述するための機能です。EOShogefugapiyoEOSヒアドキュメントはシェルスクリプトの中にちょっとした別のスクリプトを埋め込むときに便利です。数行のスクリプトのためにわざわざファイルを作る必要がなくなり、見通しがよくなります。table_name;EOS要点ヒアドキュメントを理解するうえで重要なのは、ヒアドキュメントは標準入力として扱われる、ということです。文字列リテラルでないことに注意してください。これを把握していれば、最初の例でcatにヒアドキュメントを渡していた理由がわかるかと思います。catはファイルを省略した場合に標準入力から読むため、ヒアドキュメントの内容が標準出力に出ることになります。逆に下記のようにechoに渡しても内容が標準出力に出ることはありません。echoは標準入力から読まないし、ヒアドキュメントはリテラルではないからです。EOSが渡されると次の行からEOSが単独で現れる行までの間がヒアドキュメントの内容になります。言い換えれば、コマンドそのものが記載された行に、コマンドの振る舞いを指定し、そこで標準入力として与える内容を次の行から記載することになります。EOSの部分は任意の文字を使うことができます。HOGEでも_DOC_でも問題ありません。「EOSが単独で現れる行」というのは空白やタブなど、一切のほかの文字も含んではいけません。「次の行から」というのもポイントです。以下のようにも書けます。明示的に-を指定して、標準入力として渡したい箇所を指定する必要があります。変数展開やコマンド置換が行われます。$MY_VARや$(date)と書くといつもと同じように展開されます。これを抑止する(=''で括ったときのように扱う)にはEOSの部分を下記のようにクォートします。書いても展開されないEOS行頭のタブを取り除くヒアドキュメントは便利ですが、インデントできないのが難点です。EOSをインデントしてしまうとヒアドキュメントの終わりとして認識してくれませんし、ヒアドキュメントの内容にインデントがそのまま反映されてしまいます。この問題を解決するための機能が用意されていて、<<を<<-に書き換えるだけで使用できます。<<-でヒアドキュメントを書くと、行頭のタブを無視してくれます。タブといっているのはハードタブのみでスペースは相変わらず取り除いてくれません。fugaと表示されます。変数に代入するヒアドキュメントは標準入力なので、変数に入れるにはちょっとした細工が必要です。以下のようにすれば変数に代入することができます。upLoginユーザーは見つかりませんでした。