พยายามอัพเกรดเวทมนตร์ทุบตีของฉัน ช่วยถอดรหัสคำสั่งนี้: bash -s เสถียร


18

ตกลงดังนั้นฉันทำงานผ่านการกวดวิชาที่จะได้รับการติดตั้ง rvm บน mac ของฉัน คำสั่ง bash เพื่อรับ rvm ผ่าน curl คือ

curl -L https://get.rvm.io | bash -s stable

ฉันเข้าใจคำสั่ง curl ของครึ่งแรกที่ตำแหน่ง rvm.io และผลลัพธ์ถูกไพพ์ไปยังคำสั่ง bash ที่ตามมา แต่ฉันไม่แน่ใจว่าคำสั่งนั้นกำลังทำอะไรอยู่ คำถามของฉัน:

-s: ฉันมักจะสับสนเกี่ยวกับวิธีการอ้างถึงสิ่งเหล่านี้ สิ่งนี้เป็นประเภทใด: อาร์กิวเมนต์บรรทัดคำสั่ง? สวิตช์? อื่น ๆ อีก?

-s: มันกำลังทำอะไรอยู่? ฉัน googled ประมาณครึ่งชั่วโมง แต่ไม่แน่ใจว่าจะอ้างถึงมันทำให้มันยาก

เสถียร: นี่คืออะไร

tl; dr: ช่วยฉันถอดรหัสคำสั่ง bash -s เสถียร

สำหรับผู้ที่ตอบกระทู้นี้ฉันหวังว่าสักวันหนึ่งจะต้องทุบตีความรู้เท่าที่คุณ จนกว่าจะถึงตอนนั้น opstards เช่นฉันขอบคุณสำหรับความช่วยเหลือ!

คำตอบ:


22

-sสิ่งที่เรียกว่าตัวเลือก ในกรณีของคุณหมายความว่าbashจะดำเนินการกับชุดพารามิเตอร์ตำแหน่งแรก หากคุณต้องการเล่นกับ:

$ bash -s let us set some positional parameters just for fun
$ # doh? nothing seemed to happen
$ # In fact here we're in a new instance of bash with the parameters set. Look:
$ echo "$3"
set
$ echo "$5"
positional
$ # Get it?
$ printf "%s\n" "$@"
let
us
set
some
positional
parameters
just
for
fun
$ # Amazing!
$ # Let's get out of here!
$ exit
$ # (back to previous bash session)
$

ในกรณีของคุณสคริปต์ที่ดาวน์โหลดผ่านขดถูกส่งไปยังbash(ดังนั้นจึงจะดำเนินการ) stableและจะมีครั้งแรกชุดพารามิเตอร์ตำแหน่งไป

หากคุณติดอยู่กับตัวเลือกที่คุณไม่ทราบว่าสิ่งที่พวกเขาทำman bashและจากนั้นพิมพ์/-sสิ่งนี้จะได้รับมากหรือน้อยที่คุณจะ-sอธิบายตัวเลือก หรือถ้าคุณต้องการที่จะรู้ว่าสิ่งที่เป็น-uตัวเลือกที่ไม่สำหรับsed: แล้วพิมพ์man sed/-u

หวังว่านี่จะช่วยได้!


เป็นสิ่งที่"พารามิเตอร์ตำแหน่ง?"
MikeSchinkel

2
@MikeSchinkel: ดูอ้างอิง $1พารามิเตอร์ตำแหน่งเป็นตัวแปรแทนด้วยตัวเลขเช่น $8, คุณไม่สามารถตั้งค่าโดยตรง พวกเขาจะตั้งค่าโดยอัตโนมัติเมื่อคุณเรียกโปรแกรมหรือฟังก์ชั่น ตัวอย่างเช่นฟังก์ชั่น: fun() { echo "Parameter 2 is $2"; }. แล้วลองและfun hello world fun "hello gniourf" "how are you?"
gniourf_gniourf

โอเคขอบคุณ. แต่ก็ยังสับสนอยู่ สิ่งนี้แตกต่างจากการไม่ใช้-sตัวเลือกอย่างไร
MikeSchinkel

1
@MikeSchinkel ไม่มี-sตัวเลือก: bash stableจะค้นหาไฟล์ stableและพยายามเรียกใช้งาน ด้วย-sตัวเลือก: bash -s stable: จะดำเนินการสิ่งที่มาใน stdin ของตนกับชุดเป็นstable $1
gniourf_gniourf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.