bash <<syntax หมายถึงอะไร


11

ติดตั้ง Ruby Version Manager (RVM) ดังนี้:

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

ฉันเข้าใจว่า <หมายถึงอะไรก่อน (ฟีดสคริปต์ทุบตีเพื่อแปลล่าม) ฉันสับสนกับ<(...)ส่วนหนึ่ง ดังนั้นวงเล็บทำอะไรที่นี่และเครื่องหมายน้อยกว่า ในกรณีใดบ้างที่เราสามารถใช้ไวยากรณ์เดียวกันได้

ฉันพยายามที่จะขุดบนอินเทอร์เน็ตพบคำถามนี้ดังนั้น/programming/2188199/bash-double-or-single-bracket-parentheses-curly-bracesและคำถามนี้ใน ubuntuforums: http: // ubuntuforums .org / showthread.php? p = 7803008แต่ก็ยังไม่รู้ว่าทำไมเราใช้วงเล็บเหล่านั้นและทำไมเราถึงใช้การเปลี่ยนเส้นทางอินพุตสองครั้ง

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

ไม่เหมือนกันใช่ไหม

ขอบคุณ


ฉันคิดว่าคำถามที่ดีกว่าคือ: ทำไมมันเหมือนกันbash <(curl -s ...)
Bruno Bronosky

command <(... ) ทำงานเมื่อคำสั่งยอมรับชื่อไฟล์ในตำแหน่งนั้น หากคุณใส่ <ก่อนหน้าคำสั่งจะต้องยอมรับอินพุตจาก stdin คำสั่งบางคำสั่งจะใช้ได้ทั้งสองทางและใช้ stdin หากไม่มีชื่อไฟล์ คำตอบที่ได้รับการยอมรับคำแนะนำที่แตกต่างนี้
Lee Meador

คำตอบ:


8

มันเป็นกระบวนการทดแทน มันฟีดเอาท์พุทของคำสั่งลงใน FIFO ที่สามารถอ่านได้เหมือนไฟล์ปกติ


6

มันหมายถึง "เรียกใช้คำสั่งภายในวงเล็บและส่งคืนชื่อไฟล์ที่แสดงถึงเอาต์พุตมาตรฐานของคำสั่งนั้นที่นี่"

ดังนั้นแปลเป็นสองคำสั่ง:

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

... ที่ "บางสิ่ง" อยู่ในเวทย์มนตร์ (โดยทั่วไป/dev/fd/...หรือไปป์)


3
แต่ทำไมฉันไม่สามารถใช้ขด ... | ทุบตี - เสถียรหรือไม่
Lilás
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.