私のバッシュマジックをアップグレードしようとしています。このコマンドの解読に役立ちます:bash -s stable


18

わかりましたので、Macにrvmをインストールするためのチュートリアルを進めています。curl経由でrvmを取得するbashコマンドは

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

ロケーションrvm.ioでの前半のcurlコマンドを理解し、結果が後続のbashコマンドにパイプされることを理解していますが、そのコマンドが何をしているのかわかりません。私の質問:

-s:これらの参照方法について常に混乱しています。これはどのような種類のコマンドライン引数ですか?スイッチ?他に何か?

-s:何をしていますか?私は約30分グーグルで検索しましたが、それを参照する方法がわからないのでそれが難しくなります。

安定:これは何ですか?

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オプションのためにするsedman sedし入力/-u

お役に立てれば!


「位置パラメータ」
MikeSchinkel

2
@MikeSchinkel:リファレンスを参照してください。位置パラメータは、例えば、数字で表す変数です$1$8。それらを直接設定することはできません。これらは、プログラムまたは関数を呼び出すときに自動的に設定されます。たとえば、関数の場合:fun() { echo "Parameter 2 is $2"; }。次にしてみてくださいfun hello worldfun "hello gniourf" "how are you?"
gniourf_gniourf

わかった、ありがとう。しかし、まだ混乱しています。これは、-sオプションを使用しない場合とどう違うのですか?
MikeSchinkel

1
@MikeSchinkel -sオプションなし:ファイルbash stableを探して実行しようとします stable-sオプションを使用すると、bash -s stable:がstablesetに設定され、stdinにあるものが実行され$1ます。
gniourf_gniourf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.