【发布时间】:2020-07-04 01:56:43
【问题描述】:
在我的脚本中,我有两个 http 请求。我想重用连接,所以例如我所做的是:
curl -v 'http://example.com?id=1&key1=value1' 'http://example.com?id=1&key2=value2'
有没有办法将每个 http 请求的输出存储在两个不同的变量中?我一直在寻找。我还没有找到任何解决方案。
我知道我可以执行以下操作将输出存储在两个不同的文件中。
curl -v 'http://example.com?id=1&key1=value1' -o output1 'http://example.com?id=1&key2=value2' -o output2
编辑:这是我的用例
我有一个 cronjob,每隔几分钟运行一次并行(GNU 并行)命令。而“get_data.sh”将运行 2000 次,因为 input.csv 中有 2000 行。我想避免使用 tmp 文件来获得最佳性能。
parallel \
-a input.csv \
--jobs 0 \
--timeout $parallel_timeout \
"get_data.sh {}"
在 get_data.sh 中:
id=$1
curl -v "http://example.com?id=${id}&key1=value1" -o output1 \
"http://example.com?id=${id}&key2=value2" -o output2
stat1=$(cat output1 | sed '' | cut ..)
stat2=$(cat output2 | awk '')
【问题讨论】:
-
接下来你打算对变量做什么?
-
使用sed、awk、cut等命令获取我关心的数据
-
你有多少个shell变量?
-
脚本'get_data.sh'实际上会并行运行2000次。我编辑了我的问题。我希望能更好地解释我的用例。如果您需要更多信息,请告诉我:)
-
在我看来,您的文件每行可能运行 8 个或更多进程(
bash、curl、awk、sed、cat等),收入超过 16,000过程。我不禁认为您最好使用 Python 和多线程。如果做不到这一点,请将您的临时文件写入/tmp,这是一个基于 RAM 的文件系统,应该更快。