Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 构建一个包含文本和变量的TXT文件,并使用bashshell脚本通过CURL发送变量_Linux_Bash_Shell_Curl_Post - Fatal编程技术网

Linux 构建一个包含文本和变量的TXT文件,并使用bashshell脚本通过CURL发送变量

Linux 构建一个包含文本和变量的TXT文件,并使用bashshell脚本通过CURL发送变量,linux,bash,shell,curl,post,Linux,Bash,Shell,Curl,Post,我正在尝试构建一个.txt文件,其中包含多行变量条目和一些静态文本,然后在POST请求中通过CURL发送一些变量数据 问题 目前,已生成.txt文件,但它们都添加到一行中,而不是多行中 只有一个变量(image1ID)通过CURL发送,另一个变量从有效负载中忽略 理想结果 要包含的TXT文件 file https://www.amazon.com/1.jpg 11 file https://www.amazon.com/2.jpg 13 ... 并通过CURL发送所有图像变量 #!/bin/b

我正在尝试构建一个.txt文件,其中包含多行变量条目和一些静态文本,然后在POST请求中通过CURL发送一些变量数据

问题

目前,已生成.txt文件,但它们都添加到一行中,而不是多行中

只有一个变量(image1ID)通过CURL发送,另一个变量从有效负载中忽略

理想结果

要包含的TXT文件

file https://www.amazon.com/1.jpg
11
file https://www.amazon.com/2.jpg
13
...
并通过CURL发送所有图像变量

#!/bin/bash

image1Url=https://www.amazon.com/1.jpg
image1IDNumber=11
image2Url=https://www.amazon.com/2.jpg
image2IDNumber=13
image3Url=https://www.amazon.com/3.jpg
image3IDNumber=15
image4Url=https://www.amazon.com/4.jpg
image4IDNumber=17
image5Url=https://www.amazon.com/5.jpg
image5IDNumber=19

# Build txt using variables
echo "'file '${image1Url}\n${image1IDNumber}\n'file '${image2Url}\n${image2IDNumber}\n'file '${image3Url}\n${image3IDNumber}\n'file '${image4Url}\n${image4IDNumber}\n'file '${image5Url}\n${image5IDNumber}\n" >imagedetails.txt


curl -H "content-Type: application/json"  -d {"image1ID":"${image1IDNumber}","image2ID":"${image2IDNumber}"}  https://requestbin.herokuapp.com/18y57z13

我想我不明白你在那里想干什么。 我想知道你为什么把事情复杂化?看起来,你的变量是5,如果它们是动态的,你应该使用循环

下面的代码给出了理想的结果。最简单的方法是:

#!/bin/bash

image1Url=https://www.amazon.com/1.jpg
image1IDNumber=11
image2Url=https://www.amazon.com/2.jpg
image2IDNumber=13
image3Url=https://www.amazon.com/3.jpg
image3IDNumber=15
image4Url=https://www.amazon.com/4.jpg
image4IDNumber=17
image5Url=https://www.amazon.com/5.jpg
image5IDNumber=19

# Build txt using variables

echo " file $image1Url " >> imagedetails.txt
echo " $image1IDNumber " >> imagedetails.txt
echo " file $image2Url " >> imagedetails.txt
echo " $image2IDNumber " >> imagedetails.txt
echo " file $image3Url " >> imagedetails.txt
echo " $image3IDNumber " >> imagedetails.txt
echo " file $image4Url " >> imagedetails.txt
echo " $image4IDNumber " >> imagedetails.txt
echo " file $image5Url " >> imagedetails.txt
echo " $image5IDNumber " >> imagedetails.txt

### Post the content of the file as follow :

a="\"image1ID\":\"${image1IDNumber}\",\"image2ID\":\"${image2IDNumber}\"" 
b="'$a'"
curl -H "content-Type: application/json"  -d $b https://requestbin.herokuapp.com/18y57z13
您应该提交一个包含以下输出的imagedetails.txt文件:

 file https://www.amazon.com/1.jpg
 11
 file https://www.amazon.com/2.jpg
 13
 file https://www.amazon.com/3.jpg
 15
 file https://www.amazon.com/4.jpg
 17
 file https://www.amazon.com/5.jpg
 19

我认为您有两个独立的问题:以正确的格式创建文件
imagedetails.txt
,并将数据传递给
curl
。你应该问不同的问题。请在问题中以代码块的形式显示输出文件的实际和预期内容。关于
curl
问题:请准确说明您是如何检测到问题的“只有一个变量(image1ID)通过curl发送,另一个变量从负载中被忽略。”Hi@Bodo-只有一个变量传递到RequestBin,因此我假设JSON负载语法不正确。txt文件只是一个微小的语法更改,因此,在我遇到问题的shell脚本中,问题被分组在一起。请同时显示实际的输出文件。命令中的引号很奇怪。在脚本中添加一行
set-x
,以查看实际执行的命令。我建议只在完整参数前后使用一对双引号。这对于TXT文件来说很好,谢谢。传递第二个变量时仍然出现CURL错误
CURL:(6)无法解析主机:image2ID
我只想传递特定变量,而不是txt内容。我认为最好在CURL之外使用变量。看看这个解决方案,我对它进行了编辑以满足您的需要。基本上就是这样,它需要以有效的JSON格式交付,因此它是这样到达的
{“image1ID”:“11”,“image2ID”:“13”}
为了让JSON工作,您需要将JSON数据包装在简单的引号
a={“image1ID\”:“${image1IDNumber}”,“image2ID\:${image2IDNumber}”之间}
完成了,干杯。