bashのスクリプト入力にパラメータを渡す方法

bashのスクリプト入力にパラメータを渡す方法

今、次のような行があります。

curl -fsSL http://git.io/vvZMn | bash

スクリプトをダウンロードし、標準入力ファイルとしてbashに渡します。追加のパラメータを使用してこのスクリプトを実行したいと思いますprint

たぶんこんなことはありませんか?

curl -fsSL http://git.io/vvZMn | bash -- print

しかし、これはうまくいきません。

答え1

私はあなたが探しているものが-sオプションだと思います。を使用すると、-sパラメータをスクリプトに渡すことができます。

これを説明するためのダミーの例は次のとおりです。

$ echo 'echo 1=$1' | bash -s -- Print
1=Print

ここでは、stdinで提供されたスクリプトに位置引数が与えられていることがわかりますPrint。スクリプトには-u UUIDパラメーターが必要で、以下を含めることもできます。

$ echo 'echo arguments=$*' | bash -s -- -u UUID print
arguments=-u UUID print

したがって、あなたの場合は次のようになります。

curl -fsSL http://git.io/vvZMn | bash -s -- print

または、

curl -fsSL http://git.io/vvZMn | bash -s -- -u UUID print

Stephen Harrisが指摘したように、スクリプトをダウンロードして見えないように実行するのはセキュリティ上の問題です。

答え2

システムにいる場合は、次のものを/dev/stdin使用できます。

$ echo 'echo 1=$1' | bash /dev/stdin print
1=print

するいいえこれを行う:

$ echo 'echo 1=$1' | bash /dev/stdin -- print
1=--

を使用するには--:

$ echo 'echo 1=$1' | bash -- /dev/stdin print
1=print

関連情報