curlを使用してgitから取得したスクリプトにパラメータを渡す方法を探していますが、私のスクリプトにはパラメータが必要です。
次のようにスクリプトにパラメータを渡す方法はありますか?
bash <(curl -Ls <git-script-path>)
スクリプト使用法: ./script.sh -p admin
。-p admin
提供しようとしています。bash <(curl -Ls <git-script-path>) -p admin
どんな助けでも大変感謝します。ありがとう
答え1
curl -Ls <git-script-path> | bash -s -- -p admin
これにより、bash
接続された標準入力ストリームからシェルコマンドが読み取られますcurl
。スクリプトから位置パラメータとしてアクセスできる2つのパラメータ-p
。実行可能ファイルオプションの終わりを示すためにadmin
必要です。--
bash
1行スクリプトを使用してテストしますscript.sh
。ただ実行printf '"%s"\n' "$@"
(引用符で囲まれたコマンドライン引数を別々の行に出力)私たちはあなたに代わって次のコマンドをcat script.sh
実行します。curl
$ cat script.sh| bash -s -- -p admin
"-p"
"admin"
スクリプトに対話型操作が必要な場合、標準入力からスクリプト自体を読み取ることはできません。代わりに、ファイル名でスクリプトを指定してください。
$ bash <( curl -Ls <git-script-path> ) -p admin
これがあなたの質問の内容です。これを行うには、現在のシェルが使用法を理解する必要があることに注意してください<( ... )
。
答え2
これは別の手順で実行できます。まず、スクリプトをインポートしてファイルに入れます。
curl -sL https://...git > script.sh
実行可能にする:
chmod +x script.sh
パラメータを使用して実行します。
./script.sh -p admin
個人旅行者として:
curl -sL https://...git > script.sh && chmod +x script.sh && ./script.sh -p admin
スクリプトを永久に保存したくない場合は、これを行うことができます。
tmpFile=$(mktemp) && curl -sL https://...git > $tmpFile && chmod +x $tmpFile && $tmpFile -p admin && rm $tmpFile
答え3
スクリプトに引数を渡すには、コマンドラインに引数を追加するだけです。
bash <(curl -Ls <git-script-path>) -p admin
パラメータのみを表示するコマンドの例:
$ bash <(echo 'echo args: "$@"') -p admin
args: -p admin