berusaha untuk meningkatkan sihir bash saya. bantu menguraikan perintah ini: bash -s stable

18

ok jadi saya sedang mengerjakan tutorial untuk menginstal rvm di mac saya. perintah bash untuk mendapatkan rvm melalui curl adalah

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

saya memahami perintah ikal babak pertama di lokasi rvm.io, dan bahwa hasilnya disalurkan ke perintah bash berikutnya, tapi saya tidak yakin apa yang dilakukan perintah itu. Pertanyaan saya:

-s: saya selalu bingung tentang cara merujuk ini. jenis apa ini: argumen baris perintah? sebuah saklar? sesuatu yang lain?

-s: apa yang dilakukannya? Saya telah googled selama sekitar setengah jam tetapi tidak yakin bagaimana merujuknya membuatnya sulit.

stabil: apa ini?

tl; dr: bantu saya menguraikan perintah bash -s stable

untuk mereka yang menjawab posting ini, saya bercita-cita untuk suatu hari menjadi bash melek seperti Anda. sampai saat itu, opstards seperti saya terima kasih atas bantuannya!

tim
sumber

Jawaban:

22

Benda -situ disebut opsi. Dalam kasus Anda, itu berarti bahwa bashakan dieksekusi dengan set parameter posisi pertama . Jika Anda ingin bermain dengan itu:

$ 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)
$

Dalam kasus Anda, skrip yang diunduh melalui curl dikirim ke bash(sehingga akan dieksekusi) dan akan memiliki parameter posisi pertama diatur ke stable.

Jika Anda terjebak dengan opsi, Anda tidak tahu apa yang mereka lakukan: man bashdan kemudian ketik /-sini akan membawa Anda ke tempat di mana -sopsi tersebut dijelaskan. Atau jika Anda ingin tahu apa yang dilakukan -uopsi untuk sed: man sedlalu ketik /-u.

Semoga ini membantu!

gniourf_gniourf
sumber
Apa itu "parameter posisi?"
MikeSchinkel
2
@MikeSchinkel: lihat referensi . Parameter posisi adalah variabel yang ditunjukkan oleh digit, misalnya $1,, $8. Anda tidak dapat mengaturnya secara langsung. Mereka diatur secara otomatis ketika Anda memanggil program atau fungsi. Misalnya dengan fungsi: fun() { echo "Parameter 2 is $2"; }. Lalu coba fun hello worlddan fun "hello gniourf" "how are you?".
gniourf_gniourf
Oke terima kasih. Namun masih bingung; bagaimana ini berbeda dari tidak menggunakan -sopsi?
MikeSchinkel
1
@MikeSchinkel Tanpa -sopsi: bash stableakan mencari file stable dan mencoba menjalankannya. Dengan -sopsi:: bash -s stableakan menjalankan apa yang ada pada stdin-nya, dengan stableset as $1.
gniourf_gniourf