小编Gui*_*rmo的帖子

如何在没有临时文件的第一个数据到达之前使管道中的程序不被执行?

具体案例:

generate_data | curl -T - http://someserver/path
Run Code Online (Sandbox Code Playgroud)

这意味着,我有一个程序在stdout中生成一个输出,我把它放在一个curl的远程服务器上.

问题是如果generate_data花费太多时间,服务器将返回408.

我知道管道执行所有命令而不等待数据准备好,所以我的下一次迭代是:

generate_data | ( sleep 20 ; curl -T - http://someserver/path )
Run Code Online (Sandbox Code Playgroud)

时间是运行generate_data所需的最长时间的两倍,所以所有的事情都没问题.但是......这不是最佳解决方案.

我知道我可以使用read创建一些更复杂的东西,以及一个合适的shell脚本,但我觉得我遗漏了一些明显的东西.

那么......我可以使用什么而不是sleep 20;没有创建临时文件?

bash curl pipe

5
推荐指数
1
解决办法
702
查看次数

标签 统计

bash ×1

curl ×1

pipe ×1