cercando di migliorare la mia magia bash. aiuta a decifrare questo comando: bash -s stable


18

ok, quindi sto lavorando a un tutorial per installare rvm sul mio mac. il comando bash per ottenere rvm tramite curl è

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

capisco il comando arricciatura della prima metà nella posizione rvm.io e che il risultato viene inviato al comando bash successivo, ma non sono sicuro di cosa stia facendo quel comando. Le mie domande:

-s: sono sempre confuso su come fare riferimento a questi. che tipo di cosa è questo: un argomento da riga di comando? un interruttore? qualcos'altro?

-s: cosa sta facendo? ho cercato su google per circa mezz'ora ma non sono sicuro di come fare riferimento a questo rende difficile.

stabile: cos'è questo?

tl; dr: aiutami a decifrare il comando bash -s stable

a coloro che rispondono a questo post, aspiro che un giorno siate scaltro come voi. fino ad allora, opstards come me, grazie per l'aiuto!

Risposte:


22

La -scosa si chiama un'opzione. Nel tuo caso, significa che bashverrà eseguito con il primo set di parametri posizionali . Se vuoi giocare con quello:

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

Nel tuo caso, lo script scaricato tramite curl viene inviato a bash(quindi verrà eseguito) e avrà il primo parametro posizionale impostato su stable.

Se mai sei bloccato con le opzioni non sai cosa fanno: man bashe quindi digita /-squesto ti porterà più o meno dove -sè descritta l' opzione. O se vuoi sapere cosa fa l' -uopzione per sed: man sede quindi digitare /-u.

Spero che sia di aiuto!


Che cos'è un "parametro posizionale?"
MikeSchinkel,

2
@MikeSchinkel: vedi il riferimento . Parametri posizionali sono le variabili denotate da cifre, ad esempio, $1, $8. Non puoi impostarli direttamente. Vengono impostati automaticamente quando si chiama un programma o una funzione. Ad esempio con una funzione: fun() { echo "Parameter 2 is $2"; }. Quindi prova fun hello worlde fun "hello gniourf" "how are you?".
gniourf_gniourf,

Va bene, grazie. Ma ancora confuso; come è diverso dal non usare l' -sopzione?
MikeSchinkel,

1
@MikeSchinkel Senza l' -sopzione: bash stablecercherà il file stable e tenterà di eseguirlo. Con l' -sopzione:: bash -s stableeseguirà ciò che viene sul suo stdin, con stableset as $1.
gniourf_gniourf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.