簡體   English   中英

在 while 循環中進行 Bash 擴展

[英]Bash expansion in a while loop

我正在嘗試多次運行 bash 命令,使用文本文件中的行作為參數:

while read -r line;
do
        curl -X POST \
        -u JLCarveth \
        -H "Content-Type: application/json" \
        -H "Authorization: token [...]" \
        -H "Accept: application/json" \
        https://myurl.com/api/v1/user/repos \
        -d '{"name":"$line"}';
        printf "Done $line\n";
done < repo_names.txt

問題是,API 沒有接收到name參數。 如何正確地將line值替換為 JSON 格式?

使用jq之類的工具來確保生成正確的 JSON,無論line的值如何。

while read -r line;
do
   curl -X POST \
    -u JLCarveth \
    -H "Content-Type: application/json" \
    -H "Authorization: token [...]" \
    -H "Accept: application/json" \
    https://myurl.com/api/v1/user/repos \
    -d "$(jq -n --arg n "$line" '{name: $n}')"

    printf 'Done %s\n' "$line"
done < repo_names.txt

暫無
暫無

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

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