【发布时间】:2011-03-02 10:49:05
【问题描述】:
我希望能够保存使用 curl 命令返回的数据流。我尝试使用 cat 命令,并将 curl 命令传递给它,但是我做错了。 我目前使用的代码是:
cat > file.txt | curl http://datastream.com/data
任何帮助将不胜感激。
【问题讨论】:
-
作为记录,您使用的语法会将
cat的输出发送到file.txt,然后它还会尝试将该输出发送到curl的标准输入(但是它不能,因为该输出已经进入文件)。问题 1:cat除了从自己的标准输入中读取的内容之外,不会产生任何输出,因此它只会坐在那里等您输入内容。问题 2:curl不读取进入其标准输入的内容。问题 3:您没有将curl的输出重定向到任何地方,所以它只是打印到屏幕上。 -
下面的答案很好。不过,我建议您阅读一些有关 I/O 重定向的内容。下次可能会对你有很大帮助:en.wikipedia.org/wiki/Redirection_%28computing%29
-
@David:很好的解释+1。我认为会发生的情况是外壳会解析到管道,并设置管道,并将“cat”进程的输出连接到它。 'cat' shell 进程然后会执行输出重定向(关闭进程中的管道),因此 'curl' 不会在其输入中获得任何数据。 “猫”会坐在那里等待 EOF 的输入;同时,'curl' 会将其输出生成到标准输出,而不是文件。与您所描述的差异很小-这是“开管”的顺序;叉;关闭管道;打开文件'这与我在您的文件中读到的不太一样。
-
@Jonathan:我可以相信...我并不是 I/O 重定向如何工作的内部专家。
标签: bash save data-stream