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
これは仕事のスクリプトでもよく使われていて便利そうだった