読者です 読者をやめる 読者になる 読者になる

bashのメモ ( < << <<< <() )

仕事のbashスクリプトを見ていると<<<<()が使われていて、初心者の自分には?だったので、調べた結果をメモしておく 正直な話、完全には理解しきれていない..

< (入力リダイレクト)

<の後にファイルを指定すると、内容がファイルディスクリプタ0(標準入力)にリダイレクトされる ↓の二つはほぼ同義..?

$ cat <data
hoge
fuga
$ cat data | cat
hoge
fuga

<< (ヒアドキュメント)

_EOF_は任意の文字列でよい その間の文字列が標準入力として扱われてコマンドが実行される インデントをするための機能や、エスケープをする機能もあるらしいがその辺は調べていない

$ cat <<_EOF_
> hoge
> huga
> _EOF_
hoge
huga

<<< (ヒアストリング)

ヒアドキュメントと同じような機能 <<< 直後の文字列が標準入力として扱われる

$ cat <<<hogefuga
hogefuga

ヒアドキュメントと同じように複数行も動いた

$ cat <<<'
> hoge
> fuga
> '

hoge
fuga

ヒアストリングとドキュメントはどのように使い分ければよいのだろうか..?

<(…) (プロセス置換)

コマンドの出力結果を一時ファイルのように扱ってくれる機能 本来ならファイル名でしか指定できないdiffコマンドもご覧の通り

$ diff -u <(echo 'hoge') <(echo 'fuga')
--- /dev/fd/63  2017-04-01 21:28:41.000000000 +0900
+++ /dev/fd/62  2017-04-01 21:28:41.000000000 +0900
@@ -1 +1 @@
-hoge
+fuga

これは仕事のスクリプトでもよく使われていて便利そうだった