Ich versuche meine Bash-Magie zu verbessern. helfen Sie, diesen Befehl zu entschlüsseln: bash -s stable

18

Ok, ich arbeite gerade an einem Tutorial, um rvm auf meinem Mac zu installieren. der bash befehl um rvm per curl zu bekommen ist

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

ich verstehe den curl-befehl der ersten hälfte an der position rvm.io und dass das ergebnis an den nachfolgenden bash-befehl weitergeleitet wird, aber ich bin nicht sicher, was dieser befehl tut. Meine Fragen:

-s: Ich bin immer verwirrt darüber, wie ich auf diese verweisen soll. Was ist das für ein Kommandozeilenargument? ein Schalter? etwas anderes?

-s: was macht es? Ich habe ungefähr eine halbe Stunde gegoogelt, aber nicht sicher, wie ich darauf verweisen soll, macht es schwierig.

Stall: Was ist das?

tl; dr: hilf mir, den Befehl bash -s stable zu entziffern

Für diejenigen, die diesen Beitrag beantworten, möchte ich eines Tages so gut unterrichtet sein wie Sie. bis dahin bedanken sich opstards wie ich für die hilfe!

tim
quelle

Antworten:

22

Das -sDing heißt eine Option. In Ihrem Fall bashwird dies mit dem ersten Positionsparametersatz ausgeführt . Wenn du damit spielen willst:

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

In Ihrem Fall wird das über curl heruntergeladene Skript an gesendet bash(damit es ausgeführt wird) und der erste Positionsparameter wird auf gesetzt stable.

Wenn Sie jemals mit Optionen nicht weiter weißt wissen Sie nicht , was sie tun: man bashund geben Sie dann /-sdas wird mehr oder weniger erhalten Sie, wo die -sOption beschrieben. Oder wenn Sie wissen möchten, wozu die -uOption dient sed: man sedund geben Sie dann Folgendes ein /-u.

Hoffe das hilft!

gniourf_gniourf
quelle
Was ist ein "Positionsparameter"?
MikeSchinkel
2
@MikeSchinkel: siehe die Referenz . Positionsparameter sind die Variablen , die durch Ziffern bezeichnet, zum Beispiel $1, $8. Sie können sie nicht direkt festlegen. Sie werden automatisch gesetzt, wenn Sie ein Programm oder eine Funktion aufrufen. Zum Beispiel mit einer Funktion: fun() { echo "Parameter 2 is $2"; }. Dann versuchen Sie fun hello worldund fun "hello gniourf" "how are you?".
gniourf_gniourf
Okay danke. Aber immer noch verwirrt; Wie unterscheidet sich dies von der Nichtverwendung der -sOption?
MikeSchinkel
1
@MikeSchinkel Ohne die -sOption: bash stablesucht nach der Datei stable und versucht sie auszuführen. Mit der -sOption bash -s stable:: wird ausgeführt, was auf seiner Standardeingabe steht, mit stableset as $1.
gniourf_gniourf