重写 curl 以便允许变量内的引号

Rewrite curl so that quotes inside variable are allowed

我制作了一个简单的“bot”(cron 作业中的一行),它向聊天组发送一些财富。

但是当幸运饼干有引号时,bot 只会发送文本直到第一个引号,然后它就会中断。

当前草拟的命令是:

MSG1=`/usr/games/fortune` ; \
curl -s -X POST -H 'Content-Type: application/json' --data-binary "{\"chat_id\": \"$CHATID\", \"text\": \"${MSG1}\"}" "https://api.chatter1.com/tok/$TOKEN/Message"

我尝试了很多单引号和双引号的组合,但都无济于事。我希望你们能有创意地解决这个问题。

谢谢。

根据评论,归功于@Benjamin W。:

MSG0=`/usr/games/fortune` ; \
MSG1=${MSG0//\"/\\"} ; \
curl -s -X POST -H 'Content-Type: application/json' --data-binary "{\"chat_id\": \"$CHATID\", \"text\": \"${MSG1}\"}" "https://api.chatter1.com/tok/$TOKEN/Message"

效果很好。也许我们可以通过避免临时变量来改进。

谢谢。