прагнучи оновити свою магію баш. допоможе розшифрувати цю команду: bash -s stable


18

Гаразд, я працюю через підручник, щоб встановити rmm на моєму комп'ютері. команда bash отримати rvm через curl є

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

Я розумію команду curl першої половини в розташуванні rvm.io, і що результат передається наступній команді bash, але я не впевнений, що ця команда робить. Мої запитання:

-s: я завжди плутаю з приводу того, як ставитись до них. що це за річ: аргумент командного рядка? вимикач? щось ще?

-s: що це робить? я гуглив близько півгодини, але не знаю, як звернутися до нього, це ускладнює.

стабільний: що це?

tl; dr: допоможіть мені розшифрувати команду bash -s stable

Тим, хто відповідає на цю посаду, я прагну, щоб колись бути таким же грамотним, як і ти. до тих пір, протистоячі, як я, дякую вам за допомогу!

Відповіді:


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

У вашому випадку сценарій, завантажений за допомогою curl, буде надісланий 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виконає те, що stableпоставлено на його stdin, із встановленим значенням as $1.
gniourf_gniourf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.