我是靠谱客的博主 仁爱硬币,最近开发中收集的这篇文章主要介绍curl 发送带引号的字符串变量,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天遇到一个问题,场景是这样的:我想在程序异常退出之后,将最后一行日志通过curl发送到报警服务器,我的脚本是这么写的:

log=$(tail -n 1 server.log)
curl -X POST -H "Content-Type: application/json" -d "{"text":"退出前日志:$(echo $log)"}"  https://xxx.xxx.xxx

而我的日志一般是长这样的:

log info 00:00:00 "event":"payment"

json里替换变量时,会直接将字符串变量替换进去,也就是说,这条命令实际执行的是这个:

log=$(tail -n 1 server.log)
curl -X POST -H "Content-Type: application/json" -d "{"text":"退出前日志:log info 00:00:00 "event":"payment""}"  https://xxx.xxx.xxx

这时问题来了,字符串里有引号,且没有转义,所以json的内容实际到这里就停了:

"{"text":"退出前日志:log info 00:00:00 "

这样一个json发给server,server肯定是拒绝的。。。

那么这个问题该怎么解决呢,其实只需要将字符串变量中的引号转义一下就好了,也就是这样:

" -> "

所以我们要做的就是,把这个字符串变量中所有的引号替换掉就好了,说到替换,那自然就想到了sed,是的,就是用sed,话不多说,直接上修改后的脚本:

log=$(tail -n 1 server.log | sed 's/"/\"/g')

是的,只需要这样一改,发出去就欧克了,简单吧,哈哈~

最后

以上就是仁爱硬币为你收集整理的curl 发送带引号的字符串变量的全部内容,希望文章能够帮你解决curl 发送带引号的字符串变量所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部