具体案例:
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;
没有创建临时文件?