Linux 构建一个包含文本和变量的TXT文件,并使用bashshell脚本通过CURL发送变量
我正在尝试构建一个.txt文件,其中包含多行变量条目和一些静态文本,然后在POST请求中通过CURL发送一些变量数据 问题 目前,已生成.txt文件,但它们都添加到一行中,而不是多行中 只有一个变量(image1ID)通过CURL发送,另一个变量从有效负载中忽略 理想结果 要包含的TXT文件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
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}”之间}
完成了,干杯。