[解決済み] bashで "cat << EOF "はどのように動作するのですか?
質問
プログラムに複数行の入力を行うスクリプトを書く必要があった (
psql
).
ちょっとググってみたところ、以下のような構文が有効であることがわかりました。
cat << EOF | psql ---params
BEGIN;
`pg_dump ----something`
update table .... statement ...;
END;
EOF
これは、複数行の文字列を正しく構築します (
BEGIN;
から
END;
への入力としてパイプします。
psql
.
しかし、私はそれがどのように/なぜ動作するのかがわからない、誰か説明してくださいませんか?
主に
cat << EOF
知ってる
>
をファイルに出力します。
>>
をファイルに追加します。
<
ファイルから入力を読み込む。
はどのようなものですか?
<<
を正確に教えてください。
また、そのマニュアルはあるのでしょうか?
解決方法は?
これは ヘルドック フォーマット を使用して、標準入力に文字列を提供します。参照 https://en.wikipedia.org/wiki/Here_document#Unix_shells をご覧ください。
から
man bash
:
ここからドキュメント
このタイプのリダイレクションは、シェルに対して、入力が 現在のソースから 単語のみ(末尾はなし)で構成される が表示されます。
その時点までに読み込まれたすべての行は、その時点で コマンドの標準入力になります。
here-documentsのフォーマットは。
<<[-]word here-document delimiter
パラメータ展開、コマンド置換、算術展開、および にはパス名展開が行われます。 単語 . の中に文字がある場合 単語 は が引用された場合 デリミタ の引用符除去の結果です。 単語 という行があります。 の中の ここドキュメント は展開されない。 もし 単語 のすべての行が引用符で囲まれていない場合 ここドキュメント は、パラメータ展開、コマンド 代入、算術演算 を展開します。 後者の場合 文字列
\<newline>
は は無視され\
は引用符で囲む必要があります。\
,$
および`
.リダイレクト演算子が
<<-
の場合、すべての先頭のタブ文字が は入力行から取り除かれ を含む行は デリミタ . これは これにより、シェルスクリプト内のヒアドキュメントを自然な形でインデントすることができます。
関連
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
deepinシステムのバージョン番号を見るには?deepinシステムのバージョン情報を見るコツ
-
Linux NICがRTNETLINK answersというエラーで起動できない場合、どうすればよいですか?ファイルが存在するか?
-
Linux MintのデスクトップでNoteをイタリックにすることは可能ですか?
-
Linux Mintでフェード効果をオンにする方法は?
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
deepin20のソフトをアンインストールする方法を教えてください。deepinのアプリケーションをアンインストールする2つの方法
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] 余分なスペースを含む複数行の文字列(インデントが保持される)