[英]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.