procurando atualizar minha mágica do bash. ajudar a decifrar este comando: bash -s stable

18

ok, então eu estou trabalhando em um tutorial para obter o rvm instalado no meu mac. o comando bash para obter rvm via curl é

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

Eu entendo o comando curl da primeira metade no local rvm.io e que o resultado é canalizado para o comando bash subsequente, mas não tenho certeza do que esse comando está fazendo. Minhas perguntas:

-s: estou sempre confuso sobre como se referir a eles. que tipo de coisa é essa: um argumento de linha de comando? uma troca? algo mais?

-s: o que está fazendo? pesquisei no Google por cerca de meia hora, mas não sei ao certo como se referir a isso dificulta.

estável: o que é isso?

tl; dr: me ajude a decifrar o comando bash -s stable

para aqueles que responderem a este post, eu aspiro que um dia seja tão alfabetizado quanto você. até então, opstards como eu, obrigado pela ajuda!

tim
fonte

Respostas:

22

A -scoisa é chamada de opção. No seu caso, significa que bashserá executado com o primeiro conjunto de parâmetros posicionais. Se você quiser brincar com isso:

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

No seu caso, o script baixado via curl é enviado para bash(para que seja executado) e terá o primeiro parâmetro posicional definido como stable.

Se alguma vez você está preso às opções, não sabe o que elas fazem: man bashe, em seguida, digite /-sisso mais ou menos o levará até onde a -sopção está descrita. Ou se você quiser saber o que a -uopção faz sed: man sede digite /-u.

Espero que isto ajude!

gniourf_gniourf
fonte
O que é um "parâmetro posicional?"
MikeSchinkel
2
@ MikeSchinkel: veja a referência . Parâmetros posicionais são as variáveis indicados por algarismos, por exemplo, $1, $8. Você não pode defini-los diretamente. Eles são definidos automaticamente quando você chama um programa ou uma função. Por exemplo, com uma função de: fun() { echo "Parameter 2 is $2"; }. Então tente fun hello worlde fun "hello gniourf" "how are you?".
Gniourf_gniourf 13/05
Ok obrigado. Mas ainda confuso; como isso é diferente de não usar a -sopção?
MikeSchinkel #
1
@MikeSchinkel Sem a -sopção: bash stableprocurará o arquivo stable e tentará executá-lo. Com a -sopção:: bash -s stableexecutará o que vem em seu stdin, com stableset as $1.
Gniourf_gniourf 13/05