我有一个关联数组,我想把它作为POST数据传递给cURL。但是我已经尝试了很多方法,仍然没有效果。
阵:
declare -A details
details[name]="Honey"
details[class]="10"
details[section]="A"
details[subject]="maths"
到目前为止,cURL命令已尝试(* 所有这些命令都失败 *):
resp = $(cURL --request POST --data details "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data variables=details "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data "variables=$details" "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data "variables=${details}" "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data $details "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data ${details} "https://somedomain.net/getMarks")
resp = $(cURL --request POST --data variables=details "https://somedomain.net/getMarks")
如下所示,我希望上面的请求是(间接),但我希望直接传递数组,而不是写入其内容。
resp = $(cURL --request POST --data '{"variables":[{"name": "Honey"},{"class": "10"},{"section": "A"},{"subject": "maths"}]}' "https://somedomain.net/getMarks")
请注意,开始,我将始终只拥有关联数组(而不是任何json数组或字符串)。
这个问题出现在我尝试调用cURL命令与关联数组在这个链接(GITLAB API)(例子 * 不包含 * 变量数组的例子).这里他们提到了一个变量数组(哈希数组).
2条答案
按热度按时间cfh9epnr1#
1.由于我必须使用旧版本的bash,它不涉及答案中所述的名称引用,因此我必须尝试编写关联数组的字符串创建代码,而不将其传递给函数
1.因为我总是有一个以开始的关联数组,所以传递gitlab API所接受的数组的过程通常是:
或
因此,我尝试了第二种方法的一些调整,对我有效的是:
感谢@markp-fuso给了我一个直觉,让我用他的逻辑创建了一个字符串。
wtzytmuj2#
假设/理解:
一个
bash
创意:将以下内容添加到
curl
调用中:备注:
=
的两边都不允许有空格,即resp = $(curl ...)
必须是resp=$(curl ...)