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.