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

posted @ 2022-06-22 21:09  i学笔记  阅读(463)  评论(0编辑  收藏  举报