簡體   English   中英

在 bash 腳本中將 $ 變量傳遞給 curl 命令

[英]Pass $ variable to curl command in a bash script

我試圖創建一個循環腳本,從 CSV 文件中提取電話號碼,並在每個循環中設置 $from 和 $to 變量。

但是,我收到一條錯誤消息“提供的 JSON 無效”。 由於在腳本本身中設置了變量,$body 被正確傳遞,並且當我在腳本中對 $from 和 $to 變量進行硬編碼時,沒有收到任何錯誤。

但是,一旦我嘗試使用 CSV 中的數據設置變量,我就會在執行時收到 JSON 錯誤。

我試過 --data 中所有可能的引號變體,但我沒有運氣。

我附上了我試圖傳遞給腳本的示例數據的屏幕截圖。

有任何想法嗎? [![在此處輸入圖片描述][1]][1]

OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }

while read class from to
do
   if [[ $class = "send" ]];
   then
       echo "class: $class"
       echo "from: $from"
       echo "to: $to"

       body="Test"


echo $body
       
        curl -X POST \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --header "Authorization: Bearer KEY018435A- SAMPLE" \
        --data '{
            "from": "'"$from"'",
            "to": "'"$to"'",
            "text": "'"$body"'",
            "media_urls" : [
            "https://files-service-prod.s3.amazonaws.com/direct-uploads%2F6e1a1600"
            ]
        }' \
        https://api.sortor.io/v2/messages


    fi    

sleep 2
done < $INPUT
IFS=$OLDIFS ```


  [1]: https://i.stack.imgur.com/9lkp4.png

像這樣,使用 shell heredoc

curl -X POST \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Authorization: Bearer KEY018435A- SAMPLE" \
    --data "@/dev/stdin" https://api.sortor.io/v2/messages <<EOF
    {
        "from": "$from",
        "to": "$to",
        "text": "$body",
        "media_urls" : [
            "https://files-service-prod.s3.amazonaws.com/direct-uploads%2F6e1a1600"
        ]
    }
EOF

查看

man bash | less +/here-doc

暫無
暫無

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

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