企业微信shell 脚本 特殊符号转义
根据企业微信api 说明,A标签
https://developer.work.weixin.qq.com/document/path/90236
企业API说明
重点: 传给微信的content内容中,引号前的转义符\不能缺失
因为shell 本身存在对\的转义,所以在脚本使用中,需要使用多次转义
{ "touser" : "UserID1|UserID2|UserID3", "toparty" : "PartyID1|PartyID2", "totag" : "TagID1 | TagID2", "msgtype" : "text", "agentid" : 1, "text" : { "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。" }, "safe":0, "enable_id_trans": 0, "enable_duplicate_check": 0, "duplicate_check_interval": 1800 }
转义引号 " ,需要5个\, 示例: \\\\"
# sh send_weixin.sh "" "" "456引号\\\\\"123" # 要保证在发给微信的内容中,保留一个转义符 \ "text": { "content": "456引号\"123" },
转义 \ 需要3个\, 示例: "456斜杠\\\123"
# sh send_weixin.sh "" "" "456斜杠\\\123" # 要保证在printf "\\123" ,有2个转义符\,否则printf "\xxx" 会解析 # 要保证在发给微信的内容中,只有一个转义符 \ "text": { "content": "456\123" },
转义百分号 % ,需要两个%,示例:%%
转义 \" 需要5个\, 示例: \\\\\"
原因:
1. 传入脚本的参数会转义一次,
2. ptintf 结果会再次转义一次,
3. 特殊符号如:引号、百分号,再传给微信的content中要带一个转义 \
+ message='你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\\"http://work.weixin.qq.com\\">邮件中心视频实况</a>,聪明避开排队。'
++ printf '\t"text": {\n'
++ printf '\t\t"content": "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\\"http://work.weixin.qq.com\\">邮件中心视频实况</a>,聪明避开排队。"\n'
++ printf '\t},\n'
"text": {
"content": "你的快递已到,请携带工卡前往邮件中心领取。
出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},