curl方式执行脚本时传参问题

参考:

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

通常执行发布机上的脚本时习惯使用以下方式:

curl http://example.com/script.sh | bash

若涉及到传入参数时,则可使用

1. curl http://example.com/script.sh | bash -s arg1 arg2
2. curl http://example.com/script.sh | bash /dev/stdin arg1 arg2
3. bash <( curl http://example.com/script.sh ) arg1

若参数中带有"-",则可使用长选项"--"解决

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

若参数为"-p blah -d blah",则可使用以下命令执行

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

不止是curl的输入,其他方式的输入也满足。可以通过以下例子深入理解下

echo ‘i=1; for a in [email protected]; do echo "$i = $a"; i=$((i+1)); done‘ | bash -s -- -a1 -a2 -a3 --long some_text
时间: 2024-11-06 09:47:56

curl方式执行脚本时传参问题的相关文章

【MYSQL】在脚本中使用变量-执行脚本时传参

在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量mysql -uroot -p123456 -h192.168.227.129 $db_name < $sql_name 在执行shell脚本时,在执行命令后面直接传参即可 ./sqlrecovery jinqy jinqy.sql

关于Shell脚本read传参问题

Shell脚本传参有两种方式: 方式1:sh  file.sh  arg1 arg 2.... 方式2:read -p "提示"  arg 1 arg2 默认参数直接是以空格进行区分的,下面通过几个实例讲解一下传参遇到的问题及困惑 方式一:通过脚本实例展示 [[email protected] ~]# cat arg1.sh  #!/bin/bash funChag() {   echo $1 $2 } main() {   echo $1 $2   funChag $1 $2 } m

安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?

运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装? 这3个apk的目录分别是: D:\Program Files (x86)\Appium\node_modules\appium\build\settings_apk D:\Program Files (x86)\Appium\node_modules\appium\build\unlock_apk D:\Program Files (

jemter编写Mysql脚本___传参

jmeter的Mysql脚本中穿入参数,需要用到一个配置元件  jemter传参方式有两种: 一.sql语句中直接用${变量名} 1.在用户定义变量这个配置元件中定义号变量 2.JDBC请求的sql语句中引用 运行,即可成功运行脚本 二.sql语句中用?占位符引用 1.同上在用户定义变量这个配置元件中定义号变量 2.Query Type:Prepared Update Statement,   支持占位符的Query Type 还有Callable Satement,Prepared Selec

python函数调用时传参方式

位置参数 位置参数需与形参一一对应 def test(a,b) #a,b就是位置参数 print(a) print(b) test(1,2) 关键字参数 与形参顺序无关 def test(x,y) print(x,y) test(x=2,y=3) 位置参数必须在关键字参数之前 **kwargs:把N个关键字参数,转换成字典格式 1 def test(a,**kwargs) 2 print(a) 3 print(kwargs) 4 test(8,c=1,b=2) *args:把N个位置参数,转换成

弹出新界面,在新界面执行方法后传参给调用界面,再执行调用界面的方法

需求:收费界面如果按照客户名称来检索,且有重名的话,能弹出多个客户来选择 思路:利用jquery和第三方的js库lhgdialog.min.js(我这里是为了快速.方便.美观.不用考虑兼容性),当点击查询时,调用弹出窗体,弹出窗体引用了一个单独的aspx页面,这个aspx页面将列出查询到的数据列表,然后根据选择不通的数据行,将唯一标识再传给调用页面(主页面),最后执行调用页面(主页面)的方法. 界面效果如下: aspx页面: <script src="JS/jquery-1.10.2.mi

TestComplete中执行脚本时控件值未同步刷新问题

今天写了一个程序安装的自动化脚本,调试的时候发现有些控件的值获取后一直未自动刷新,鉴于该问题,仔细分析和请教后,发现TestComplete不会自动刷新控件中变化的值,这需要我们自己去控制刷新. 1.定义一个延迟函数(参数:延迟秒数,执行延迟的条件) Function TimeDelay(DelaySeconds,condition)    Dim interval,startTime    startTime=Time    Do While CBool(condition)        s

source和sh执行脚本时的差异

在CentOS7下,有如下脚:sh02.sh. 1 用sh或者bash执行 先执行echo $firstname $lastname 再执行 sh sh02.sh 最后执行 echo $firstname $lastname 2 用source执行 先执行  echo $firstname $lastname 再执行 source sh02.sh 最后执行  echo $firstname $lastname 结论:使用sh 执行shell文件时,是在父进程的bash下新建了一个子进程,sh02

./yy.sh -d bash 执行脚本时所加的参数

-e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真 -L filename 如果 filename为符号链接,则为真 -r filename 如果 filename可读,则为真 -w filename 如果 filename可写,则为真 -x filename 如果 filename可执行,则为真 -s filename 如果文件长度不为0,则为真 -h fil