天天看點

curl方式執行腳本時傳參問題

參考:

https://stackoverflow.com/questions/4642915/passing-parameters-to-bash-when-executing-a-script-fetched-by-curl/4642975

通常執行釋出機上的腳本時習慣使用以下方式:

1

<code>curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh | </code><code>bash</code>

若涉及到傳入參數時,則可使用

2

3

<code>1. curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh | </code><code>bash</code> <code>-s arg1 arg2</code>

<code>2. curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh | </code><code>bash</code> <code>/dev/stdin</code> <code>arg1 arg2</code>

<code>3. </code><code>bash</code> <code>&lt;( curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh ) arg1</code>

若參數中帶有"-",則可使用長選項"--"解決

<code>curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh | </code><code>bash</code> <code>-s -- arg1 arg2</code>

若參數為"-p blah -d blah",則可使用以下指令執行

<code>curl http:</code><code>//example</code><code>.com</code><code>/script</code><code>.sh | </code><code>bash</code> <code>-s -- -p blah -d blah</code>

不止是curl的輸入,其他方式的輸入也滿足。可以通過以下例子深入了解下

<code>echo</code> <code>'i=1; for a in $@; do echo "$i = $a"; i=$((i+1)); done'</code> <code>| \</code>

<code>bash</code> <code>-s -- -a1 -a2 -a3 --long some_text</code>

<code></code>

本文轉自 xoyabc 51CTO部落格,原文連結:http://blog.51cto.com/xoyabc/1950743,如需轉載請自行聯系原作者