w在POST请求中使用sed输出

时间:2014-01-13 17:35:42

标签: bash sed solaris wget

UNIX的世界相当新,并试图让我的头脑发挥它的怪癖。

我正在尝试创建一个相当简单的shell脚本,该脚本使用wGet发送已使用Sed预处理的XML文件。

我考虑过使用一个管道,但它引起了一些奇怪的行为,它只是将我的XML输出到控制台。

这是我到目前为止所做的:

File_Name=$1
echo "File name being sent to KCIM is : " $1
wget "http://testserver.com" --post-file `sed s/XXXX/$File_Name/ < template.xml` |
 --header="Content-Type:text/xml"

从输出中我可以看到我没有这样做,因为它创建格式错误的HTTP请求

  

POST数据文件<?xml' missing: No such file or directory Resolving <... failed: node name or service name not known. wget: unable to resolve host address&lt;'

用于解释问题的解决方案以及解决方案

1 个答案:

答案 0 :(得分:3)

对于wget,选项post-file发送指定文件的内容。在您的情况下,您似乎直接传递数据,因此您可能需要--post-data

您现在正在采取的方式,bash获取sed的输出,wget得到类似的结果:

wget ... --post-file <?xml stuff stuff stuff

因此wget寻找名为<?xml的文件,而不是逐字逐句地使用该文字。