bash <<構文はどういう意味ですか?


10

Rubyバージョンマネージャー(RVM)は次のようにインストールされています。

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

私は最初の<の意味を理解しています(bashスクリプトをbashインタープリターにフィードします)<(...)。だから、ここで括弧が何をするかと小なり記号。同じ構文を使用できるのはどの場合ですか?

私は、インターネット上で掘るしようとしたこのSOの質問を見つけ/programming/2188199/bash-double-or-single-bracket-parentheses-curly-bracesとubuntuフォーラムでこの質問:のhttp:// ubuntuフォーラム.org / showthread.php?p = 7803008しかし、なぜこれらの括弧を使用するのか、なぜ入力リダイレクトを2回使用するのかはまだわかりません。

bash < curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer

同じではないですか?

ありがとう。


私はより良い質問だと思います:なぜこれが同じなのかbash <(curl -s ...)
ブルーノブロノスキー

コマンド<(...)は、コマンドがその場所のファイル名を受け入れるときに機能します。その前に別の<を置くと、コマンドはstdinからの入力を受け入れる必要があります。一部のコマンドはどちらの方法でも機能し、ファイル名が指定されていない場合はstdinを使用します。受け入れられた答えはこの違いを示唆しています。
Lee Meador

回答:



5

これは、「括弧内でコマンドを実行し、そのコマンドの標準出力を表すファイル名をここに返す」ことを意味します。

したがって、これは2つのコマンドに変換されます。

curl ... > something
bash -s stable < something

...「何か」が魔法です。(通常、/dev/fd/...またはパイプ。)


3
しかし、なぜcurlを使用できないのですか... | bash -s stable?
リラス2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.