有没有办法在文件中包含参数,而不是像
curl -X GET -G 'http://rest_url' -d 'param1=value1' -d 'param2=value2' -d 'paramX=valueX'
为了能具有
curl -X GET -G 'http://rest_url' -d @file.txt
我已将该文件作为
'param1=value1' 'param2=value2' 'paramX=valueX'
但那不起作用。
mrfwxfqh1#
是的,你可以在一个文件中完成这些操作,但是它们会以一个-d选项的形式出现,这样curl就不会在参数之间插入"&“符号,所以你必须写一个文件来包含这些数据,如下所示:
param1=value1¶m2=value2 curl -G 'http://rest_url' -d @file.txt
如果您希望像问题中那样用换行符分隔参数,我建议使用一个小的shell脚本来解决这个问题:
#!/bin/sh while read param; do args="$args -d $param"; done curl -G $args http://example.com
并像这样使用它:
script.sh < file.txt
vfh0ocws2#
正如@daniel-stenbeng所写的,关键是使用-G强制GET请求,并为所有查询字符串参数使用单个-d。避免编写另一个shell脚本的一种方法是使-d从STDIN(-d @-)读取,然后将参数的连接字符串提供给STDIN。一个简单的方法是使用paste命令进行连接:
-G
-d
-d @-
paste
paste -s -d'&' file.txt | curl -G http://example.com -d @-
2条答案
按热度按时间mrfwxfqh1#
是的,你可以在一个文件中完成这些操作,但是它们会以一个-d选项的形式出现,这样curl就不会在参数之间插入"&“符号,所以你必须写一个文件来包含这些数据,如下所示:
如果您希望像问题中那样用换行符分隔参数,我建议使用一个小的shell脚本来解决这个问题:
并像这样使用它:
vfh0ocws2#
正如@daniel-stenbeng所写的,关键是使用
-G
强制GET请求,并为所有查询字符串参数使用单个-d
。避免编写另一个shell脚本的一种方法是使-d
从STDIN(-d @-
)读取,然后将参数的连接字符串提供给STDIN。一个简单的方法是使用
paste
命令进行连接: