dcs*_*san 3 bash shell json curl
我正在使用curl
JSON发送到API端点.然而,在bash链中的某个地方,它变得混乱了.
有关编码的特殊信息curl
吗?
如果我像这样构造有效载荷:
PAYLOAD='payload={"channel": "github", "username": "webhookbot", "icon_emoji": ":ghost:", "text": "'
PAYLOAD+=$1
PAYLOAD+=' " }'
echo $PAYLOAD
curl -X POST --data-urlencode "$PAYLOAD" $SLACKPOSTURL
echo "sent"
Run Code Online (Sandbox Code Playgroud)
我会收到一个错误
Payload无效JSONsent
但是,如果我只是硬连线为输出分配一个变量
PAYLOAD='payload={"channel": "github", "username": "webhookbot", "icon_emoji": ":ghost:", "text": "LAST_COMMIT Merge pull request #558 from dcsan/boteditor Boteditor " }'
Run Code Online (Sandbox Code Playgroud)
那么它会很好.
是否存在一些简单的赋值与串联字符串不同的东西?在控制台中,输出看起来相同.
FWIW有些消息可以通过,但内容如下:
LAST_COMMIT来自dcsan/boteditor Boteditor的合并拉取请求#558
只有经过硬编码才能通过.所以它不是另一个非洲人看到的,它与消息的构建方式有关.
我想你想将值连接到你的变量中.但+=
不是这样做的方式.
要连接变量中的字符串,您需要说:
PAYLOAD="$PAYLOAD $1"
Run Code Online (Sandbox Code Playgroud)
总之,它将类似于以下内容.注意需要使用"
以便$PAYLOAD
扩展变量并使用\"
存储文字双引号:
PAYLOAD='payload={"channel": "github", "username": "webhookbot", "icon_emoji": ":ghost:", "text": "'
PAYLOAD="$PAYLOAD $1 \" }"
echo "$PAYLOAD"
curl -X POST --data-urlencode "$PAYLOAD" $SLACKPOSTURL
echo "sent"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2120 次 |
最近记录: |