Как сохранить вывод curl в нескольких переменных в Bash

В моем сценарии у меня есть два 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 Parallel) команду ниже каждые несколько минут. И 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 '')

Всего 2 ответа


Хорошо, вот немного вдохновения:

id=$1
output1=$(curl -v "http://example.com?id=${id}&key1=value1")
output2=$(curl -v "http://example.com?id=${id}&key2=value2")

stat1=$(echo "$output1" | sed '' | cut ..)
stat2=$(echo "$output2" | awk '')

Таким образом, вы избегаете записи материала на диск.


Вы ищете parset . Он является частью env_parallel который входит в пакет GNU Parallel ( https://www.gnu.org/software/parallel/parset.html ):

parset myarr 
  -a input.csv 
  --jobs 0 
  --timeout $parallel_timeout 
  get_data.sh {}

echo "${myarr[3]}"

Есть идеи?

10000