簡體   English   中英

如何同時訪問Bash for loop中的curl請求的兩個數組索引?

[英]How to simultaneously access two arrays indexes for a curl request in Bash for loop?

在Bash中,我嘗試從http://free.currencyconverterapi.com/api/v5/convert?q=USD_GBP查詢國家/地區貨幣,並自動更新我的OpenEdge API,而無需對符號進行硬編碼。 這意味着我必須將我的API中的貨幣符號卷曲並保存在數組中,並卷曲並保存貨幣轉換器API中的值。 之后,我想同時運行兩個for循環或同時訪問兩個數組的索引,以運行需要

url/rest/USD/12

一種輸入。

在bash中,我稱卷發返回

ZAR USD EUR BWP CHF GBP  

從我的API一行。 然后我將結果保存在一個名為currency的變量中

jsonEnd="_ZAR.val"
symbolEnd="_ZAR"

然后我跑

values=()
for j in ${currency[*]};
do
        ${values[j]}=$(curl -X GET -H "Content-type: application/json" http://free.currencyconverterapi.com/api/v5/convert?q=${currency[j]}$symbolEnd&compact=y | jq '.${currency[j]}$jsonEnd')         
done

要將貨幣值放入json結果中“ _ZAR.val”為a的數組中,請嘗試使用jq指向“ val”

{
"USD_ZAR": {
    "val": 14.23065
} }

最后,我試圖運行一個POST Curl,它需要上面發現的相對貨幣符號(例如USD)和一個要更新的值。 以這種形式

curl -X PUT -H "Content-Type: application/json" -H "Authorization: $context" http://192.168.xxx.xxx:8080/rest/exchangerates/USD/12

我嘗試了這個

for i in ${values[@]}
do    
      curl -X PUT -H "Content-Type: application/json" -H "Authorization: $context" http://192.168.xxx.xxx:8080/rest/exchangerates/${currency[i]}/${values[i]}
done

我做對了,錯誤包括

curl: (6) Could not resolve host: USD_ZAR

等我剛接觸bash

${currency[*]}${currency[*]}都將擴展為數組內的 所以當你寫...

for j in "${currency[@]}"; do
    echo "${currency[j]}"         
done

...您不會訪問諸如${currency[0]}類的東西,但不會訪問不存在的${currency[USD]}

另外,要分配變量,您不能編寫${array[i]}=value而必須使用array[$i]=value

您可能還希望切換到可以使用字符串作為索引的關聯數組(也稱為字典map )。 這是一個粗略的骨架:

currencies=(ZAR USD EUR BWP CHF GBP)
declare -A values
for c in "${currencies[@]}"; do
    values["$c"]="$(curl ..."$c"... | jq ..."$c"... )"
done

c=EUR
echo "The value of $c is ${values[$c]}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM