стремясь обновить мою магию Баш. помогите расшифровать эту команду: bash -s stable

18

Хорошо, так что я работаю через учебник, чтобы установить RVM на моем Mac. команда 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.

Надеюсь это поможет!

gniourf_gniourf
источник
Что такое «позиционный параметр»?
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установленным как $1.
gniourf_gniourf