天天看点

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,如需转载请自行联系原作者