键盘Maestro Bash CURL脚本无变量但无法使用

时间:2015-09-21 16:30:24

标签: json bash curl keyboard-maestro

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

我在使用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有关。任何人都知道我做错了什么?有关与变量相关的转义,非转义或文本编码的东西可能吗?

谢谢!

马克: - )

1 个答案:

答案 0 :(得分:2)

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

-d "$KMVAR_CURL_Text"

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