Bash <<sözdizimi ne anlama geliyor?


11

Ruby Version Manager (RVM) şu şekilde yüklendi:

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

İlk önce ne anlama geldiğini anlıyorum (bash betiğini bash tercümanına besler), <(...)kısmen kafam karıştı . Yani, burada parantezlerin ne yaptığını ve daha az işaret. Hangi durumlarda aynı sözdizimini kullanabiliriz?

İnternette kazmaya çalıştım, bu SO sorusunu /programming/2188199/bash-double-or-single-bracket-parentheses-curly-braces ve ubuntuforums üzerinde bu soruyu buldum: http: // ubuntuforums .org / showthread.php? p = 7803008 Ancak neden bu parantezleri kullandığımızı ve neden giriş yönlendirmeyi iki kez kullandığımızı bilmiyoruz.

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

aynı değil mi?

Teşekkürler.


Bence daha iyi sorular: Bu neden aynıbash <(curl -s ...)
Bruno Bronosky

Komut o konumda bir dosya adı kabul ettiğinde <(...) komutu çalışır. Ondan önce başka bir <daha koyarsanız, komutun stdin'den girişi kabul etmesi gerekir. Bazı komutlar her iki şekilde de çalışır ve sağlanan dosya adı yoksa stdin kullanır. Kabul edilen cevap bu farklılığa işaret ediyor.
Lee Meador

Yanıtlar:



6

"Komutu parantez içinde çalıştır ve bu komutun standart çıktısını burada temsil eden bir dosya adı döndür" anlamına gelir.

Yani, bu iki komuta dönüşür:

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

... "şey" büyüsüdür. (Genellikle /dev/fd/...veya bir boru.)


3
ama neden sadece kıvırmak kullanamıyorum ... | bash -s kararlı?
Lilás
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.