企业微信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>,聪明避开排队。"
},

浙公网安备 33010602011771号