寻求升级我的 bash 魔法。帮助破译这个命令:bash -s stable

tim*_*tim 18 bash

好的,所以我正在学习如何在我的 Mac 上安装 rvm 的教程。通过 curl 获取 rvm 的 bash 命令是

curl -L https://get.rvm.io | bash -s stable
Run Code Online (Sandbox Code Playgroud)

我了解 rvm.io 位置上前半部分的 curl 命令,并且结果通过管道传输到后续的 bash 命令,但我不确定该命令在做什么。我的问题:

-s :我总是对如何引用这些感到困惑。这是什么类型的东西:命令行参数?一个开关?还有什么?

-s :它在做什么?我已经用谷歌搜索了大约半个小时,但不知道如何引用它,这让它变得很困难。

稳定:这是什么?

tl;dr:帮我破译命令 bash -s stable

对于那些回答这篇文章的人,我渴望有一天能像你一样精通 bash。在此之前,像我这样的opstard 感谢您的帮助!

gni*_*urf 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)
$
Run Code Online (Sandbox Code Playgroud)

在您的情况下,通过 curl 下载的脚本被发送到bash(因此它将被执行)并将第一个位置参数设置为stable.

如果您被选项卡住了,您不知道它们是做什么的:man bash然后键入/-s这或多或少会让您到达-s描述选项的位置。或者,如果您想知道该-u选项的作用是sed:man sed然后输入/-u.

希望这可以帮助!

  • @MikeSchinkel:见[参考](http://www.gnu.org/software/bash/manual/bashref.html#Positional-Parameters)。位置参数是用数字表示的变量,例如`$1`、`$8`。你不能直接设置它们。当您调用程序或函数时,它们会自动设置。例如一个函数:`fun() { echo "Parameter 2 is $2"; }`。然后尝试`fun hello world`和`fun“hello gniourf”“你好吗?”`。 (2认同)