如何使用 webhook 转义下面 bash 脚本中的双引号,该脚本用于在 discord 上发送消息?

How to escape double quotes in below bash script that is being used to send messages on discord using webhook?

我正在使用以下脚本通过 webhook 将消息发送到 discord:

#!/bin/bash
webhookurl="https://discord.com/..."
messagearray=($(curl -s -i https://www.google.com/ | awk 'NR==12'))
message=`echo ${messagearray[@]} | tr -cd "0-9A-Za-z .=_,:\"()-[]{}\'/'"`;
curl -H "Content-Type: application/json" -d '{"content": "'"$message"'"}' "$webhookurl"

终端的输出是:alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"

但在 discord 中它发送时没有像这样的双引号:alt-svc: h3=:443; ma=2592000,h3-29=:443; ma=2592000,h3-Q050=:443; ma=2592000,h3-Q046=:443; ma=2592000,h3-Q043=:443; ma=2592000,quic=:443; ma=2592000; v=46,43

我已经使用 \" 来转义双引号,但这似乎不起作用。可能的解决方案是什么?

您不会“转义引号”。要处理 JSON,您需要使用 JSON 库和工具。喜欢 jq.

message="anything you want here"
data=$(jq -n --arg message "$message" '.content = $message')
curl -d "$data" ...

用 shellcheck 检查你的脚本。