Bash <cú pháp có nghĩa là gì?


10

Trình quản lý phiên bản Ruby (RVM) được cài đặt như vậy:

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

Tôi hiểu <nghĩa đầu tiên (cung cấp tập lệnh bash cho trình thông dịch bash), tôi bị nhầm lẫn với <(...)một phần. Vì vậy, những gì dấu ngoặc đơn làm ở đây và ít hơn dấu hiệu. Trong trường hợp nào chúng ta có thể sử dụng cùng một cú pháp?

Tôi đã cố gắng khai thác trên internet, tìm thấy câu hỏi SO này /programming/2188199/bash-double-or-single-brquet-parentheses-curly-braces và câu hỏi này trên ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008 Nhưng vẫn không biết tại sao chúng ta sử dụng các dấu ngoặc đơn đó và tại sao chúng ta sử dụng chuyển hướng đầu vào hai lần.

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

không giống nhau à?

Cảm ơn.


Tôi nghĩ rằng câu hỏi tốt hơn là: Tại sao lại giống như vậybash <(curl -s ...)
Bruno Bronosky

lệnh <(...) hoạt động khi lệnh chấp nhận tên tệp ở vị trí đó. Nếu bạn đặt <trước nó, lệnh phải chấp nhận đầu vào từ stdin. Một số lệnh sẽ hoạt động theo cách này và sử dụng stdin nếu không có tên tệp được cung cấp. Câu trả lời được chấp nhận gợi ý về sự khác biệt này.
Lee Meador

Câu trả lời:



5

Nó có nghĩa là "chạy lệnh bên trong ngoặc và trả về tên tệp đại diện cho đầu ra tiêu chuẩn của lệnh đó tại đây".

Vì vậy, điều đó chuyển thành hai lệnh:

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

... Trong đó "một cái gì đó" là ma thuật. (Thông thường, /dev/fd/...hoặc một đường ống.)


3
nhưng tại sao tôi không thể sử dụng curl ... | Bash -s ổn định?
Lilás
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.