我正在尝试发布到url,发送表单数据,并且这些字段之一采用XML。问题在于,当执行此命令时,将执行XML中的第一个“ <”以重定向命令的输出,而不仅仅是将其用作纯文本字符串。如何在bash脚本中发送它?
这是我的sendcurl.sh的相关部分:
istreambuf_iterator<int>
我尝试在$ tags中使用几个不同的值,但是输出始终相同:
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/
关于如何将其作为表单字段传递的任何想法?
答案 0 :(得分:0)
您的-F
选项都没有被双引号引起,这是建议的做法。通常,这不会有问题,但是如果字符串中的字符可能会被shell误解(例如空格,小于或大于符号等),那么您将遇到问题。
在这种情况下,您只需要更改以下行:
-F tagging=$tags
对此:
-F tagging=\"$tags\"
请注意,您必须对双引号进行转义,因此外壳程序将允许双引号不进行分析。
执行以下操作后,curl命令的相关部分如下所示:
-F tagging="<Tagging><TagSet><Tag><Key>TagName</Key><Value>TagValue</Value></Tag></TagSet></Tagging>"