所有。我试图在这个论坛和其他地方在线研究这个问题。我很难过。希望有人可以提供帮助。
我在使用Keyboard Maestro将JSON发送到Zendesk API以将用户添加到组时遇到问题。我是通过Bash shell脚本中的CURL来实现的。在您认为这是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有关。任何人都知道我做错了什么?有关与变量相关的转义,非转义或文本编码的东西可能吗?
谢谢!
马克: - )答案 0 :(得分:2)
始终引用shell扩展,除非您有特定且令人信服的理由不这样做。
-d "$KMVAR_CURL_Text"
否则,字符串将通过字符串拆分(在IFS
的内容上分割成多个单词)和glob扩展(将每个单词视为glob表达式并可能替换为文件名列表)