1

全部。我试图在这个论坛和其他地方在线研究这个问题。我难住了。希望有人可以提供帮助。

我在使用 Keyboard Maestro 将 JSON 发送到 Zendesk API 以将用户添加到组时遇到问题。我正在通过 CURL 在 Bash shell 脚本中进行操作。在您认为这是 Zendesk API 问题之前,请耐心等待!我真的认为这是 KM 或我在 KM 中做的一些愚蠢的事情。(可能是后者!)

像这样从 KM 运行的 Bash 脚本可以完美运行:

curl https://yoursite.zendesk.com/api/v2/group_memberships/create_many.json \
-X POST -d '{"group_memberships": [{"user_id": 123, "group_id": 1}, {"user_id": 456, "group_id": 1}, {"user_id": 789, "group_id": 1}]}' \
-H "Content-Type: application/json" -v -u (email address here):(password here)

但是,我想通过 KM 变量 ($KMVAR_CURL_Text) 将 user_id 和 group_id 信息传递给 bash 脚本。

$KMVAR_CURL_Text 变量内容与 user_id 和 group_id 信息匹配,我有上面的手动脚本。我已经通过 JSON 验证器运行了变量文本。没关系。我已经手动将变量数据粘贴回 bash 脚本中,没关系。

但是,如果我使用变量 $KMVAR_CURL_Text:

'{"group_memberships": [{"user_id": 123, "group_id": 1}, {"user_id": 456, "group_id": 1}, {"user_id": 789, "group_id": 1}]}'

使用 shell 脚本:

curl https://yoursite.zendesk.com/api/v2/group_memberships/create_many.json \
-X POST -d $KMVAR_CURL_Text \
-H "Content-Type: application/json" -v -u (email address here):(password here)

Zendesk 的 API 告诉我:

< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Mon, 21 Sep 2015 15:09:21 GMT
< Content-Type: application/json; charset=UTF-8
< Content-Length: 111
< Connection: keep-alive
< Status: 400 Bad Request
< X-Zendesk-API-Version: v2
< X-Zendesk-API-Warn: Removed restricted keys ["'{\"group_memberships\":"] from parameters according to whitelist

我很高兴与 Zendesk 一起解决这个问题。但是,由于我可以手动完成这项工作,我觉得问题出在我或 KM 身上。有人知道我做错了什么吗?可能与变量相关的转义、非转义或文本编码?

谢谢!

马克:-)

4

1 回答 1

2

始终引用 shell 扩展,除非您有特定且令人信服的理由不这样做。

-d "$KMVAR_CURL_Text"

否则,字符串会经过字符串拆分(成为在 的内容上拆分的多个单词IFS)和 glob 扩展(将这些单词中的每一个都视为 glob 表达式并可能替换为文件名列表)。

于 2015-09-21T16:34:56.447 回答