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;'
用于解释问题的解决方案以及解决方案
答案 0 :(得分:3)
对于wget
,选项post-file
发送指定文件的内容。在您的情况下,您似乎直接传递数据,因此您可能需要--post-data
。
您现在正在采取的方式,bash
获取sed
的输出,wget
得到类似的结果:
wget ... --post-file <?xml stuff stuff stuff
因此wget
寻找名为<?xml
的文件,而不是逐字逐句地使用该文字。