重写 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"
效果很好。也许我们可以通过避免临时变量来改进。
谢谢。
我制作了一个简单的“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"
效果很好。也许我们可以通过避免临时变量来改进。
谢谢。