[英]How to send XML as form field using CURL
我正在尝试发布到url,发送表单数据,并且这些字段之一采用XML。 问题在于,当执行此命令时,将执行XML中的第一个“ <”以重定向命令的输出,而不仅仅是将其用作纯文本字符串。 如何在bash脚本中发送它?
这是我的sendcurl.sh的相关部分:
tags='<Tagging><TagSet><Tag><Key>TagName</Key><Value>TagValue</Value></Tag></TagSet></Tagging>'
curl -x http://localhost:8080 \
-# -k \
-F key=$targfile \
-F acl=$acl \
$key_and_sig_args \
-F tagging=$tags \
-F "Policy=$p" \
-F "Content-MD5=$md5" \
-F "Content-Type=$mime" \
-F "file=@$srcfile" \
https://${bucket}.s3.amazonaws.com/
我尝试在$ tags中使用几个不同的值,但输出始终相同:
no such file or directory: Tagging...
关于如何将其作为表单字段传递的任何想法?
您的-F
选项都不会被双引号引起来,这是建议的做法。 通常,这不会有问题,但是如果字符串中的字符可能会被shell误解(例如空格,小于或大于符号等),那么您将遇到问题。
在这种情况下,您只需要更改以下行:
-F tagging=$tags
对此:
-F tagging=\"$tags\"
请注意,您必须对双引号进行转义,因此外壳程序将允许它们不解析地使用。
完成以下操作后,curl命令的相关部分如下所示:
-F tagging="<Tagging><TagSet><Tag><Key>TagName</Key><Value>TagValue</Value></Tag></TagSet></Tagging>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.