我正在测试一些上传协议,并希望在一行中将输入参数作为回显发送,将文件作为上传信息发送。
示例:
echo -e 'upload\n<uploadid>\n' | nc 127.0.0.1 1567 < ~/test.txt
问题是我的回声被忽略 :(
知道如何将echo和文件组合作为命令的输入吗? (nc
只是一个例子)
注意:将echo和文件写入另一个文件并不是一个更好的解决方案,因为我正在尝试测试流媒体的真实场景。复制上传文件会遗漏这一点。
答案 0 :(得分:4)
只有一个标准输入,你不能同时管道和重定向。
创建完整输入,并通过管道发送:
(echo -e 'upload\n<uploadid>\n'; cat ~/test.txt) | nc 127.0.0.1 1567
答案 1 :(得分:2)
理论上,实现这一目标的最有效方法是使用此处的文档:
nc 127.0.0.1 1567 <<EOF
upload
<uploadid>
$(<test.txt)
EOF
这可以避免因使用管道或调用cat
而导致的任何额外流程创建。