Как l oop API-вызовы через наборы двух переменных - PullRequest
0 голосов
/ 14 января 2020

У меня есть несколько сотен записей, которые мне нужно обновить через API. Обновление относится к тому же полю, но каждая запись не обязательно получит одно и то же значение. Это означает, что мне нужно два набора переменных, один для идентификатора записи, а другой для уникальных значений, которые нужно ввести. Я думал, что смогу выполнить sh это с помощью cURL или bash, но не смог придумать рабочий скрипт. Наиболее близким было следующее: переменная $ i для четырех идентификаторов записей и переменная $ j для значения (новая дата), каждая соответствующая запись будет обновлена ​​с помощью ...

for i in "50446" "50513" "50526" "50546" ; do
for j in "2019-08-15 07:00:00" "2019-08-26 07:00:00" "2019-08-20 07:00:00" "2019-08-22 07:00:00" ; do

( curl -H "Accept: application/xml" -H "X-API-KEY:***************" -d "<invoice-header><payment-date>$j.000</payment-date></invoice-header>" -X PUT "https://dummy-environment.com/api/invoices/$i" ) &&continue

done
done

Однако с В приведенном выше сценарии API перебрал все идентификаторы записи и обновил их, указав 4-е (последнее) значение даты, указанное в переменной $ j. Он не вытягивал каждое соответствующее значение из $ j. Кто-нибудь делал что-то подобное раньше? Есть предложения?

1 Ответ

0 голосов
/ 14 января 2020

Вы делаете вызов API с каждой комбинацией i и j. Если вы просто хотите соответствующие элементы каждого списка, поместите их в массивы, а затем l oop через индексы массива.

ids=("50446" "50513" "50526" "50546")
dates=("2019-08-15 07:00:00" "2019-08-26 07:00:00" "2019-08-20 07:00:00" "2019-08-22 07:00:00")
for ((idx = 0; idx < ${#ids[@]}; idx++))
do
    i=${ids[idx]}
    j=${dates[idx]}
    curl -H "Accept: application/xml" -H "X-API-KEY:***************" -d "<invoice-header><payment-date>$j.000</payment-date></invoice-header>" -X PUT "https://dummy-environment.com/api/invoices/$i"
done

Я не уверен, что вы намеревались использовать с && continue в вашем l oop. Поскольку l oop продолжается автоматически, нет смысла добавлять его как условный оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...