【发布时间】:2022-02-23 04:43:16
【问题描述】:
我正在尝试在以下循环中使用 curl 发帖:
for name in "${first_name[@]}"; do
password=$(</dev/urandom tr -dc '12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB' | head -c16; echo "")
curl -X POST -H "Content-Type: application/json" -H "Authorization: Token ${token}" -d '{"username": "${username[$name]}", "password": "${password}", "email": "${email[$name]}", "first_name": "${name}", "last_name": "${last_name[$name]}", "is_staff": "${staff[$name]}", "is_active": "${active[$name]}", "groups": ["${group_id}"]' https://app.com/api/users/users/
done
使用此语法,我收到以下错误:
{"detail":"JSON parse error - Expecting ',' delimiter: line 1 column 242 (char 241)"}
每个变量都有一个值,因为我在循环中使用回显打印它们。
看起来像是语法错误。有什么想法有什么问题吗?
谢谢。
【问题讨论】:
-
您将参数单引号引用到
-d,因此您的参数都不会被扩展。 -
使用
jq生成有效负载,因为它负责安全地转义任何参数值以为您生成有效的 JSON。 -
“json”对象的末尾还缺少
}。 -
你可以试试
jo。 -
链接副本上排名靠前的答案将为您提供比当前直接在此处添加的答案更强大的解决方案;我强烈建议您链接并阅读它们。