我正在使用git,然后将提交消息和其他位作为JSON有效负载发布到服务器。
目前我有:
MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`
将MSG设置为:
Calendar can't go back past today
然后
curl -i -X POST \
-H 'Accept: application/text' \
-H 'Content-type: application/json' \
-d "{'payload': {'message': '$MSG'}}" \
'https://example.com'
我的真实JSON还有另外两个字段。
这很好用,但是当然当我有一个提交消息(例如上面带有撇号的提交消息)时,JSON是无效的。
如何转义bash中所需的字符?我不熟悉该语言,所以不确定从哪里开始。更换'
有\'
会做的最小,我怀疑这份工作。
好,知道该怎么办。Bash像预期的那样在本机上支持此功能,尽管与往常一样,语法并不是很容易猜测!
本质上${string//substring/replacement}
返回您想要的图像,因此您可以使用
MSG=${MSG//\'/\\\'}
去做这个。下一个问题是第一个正则表达式不再起作用,但是可以将其替换为
git log -n 1 --pretty=format:'%s'
最后,我什至不需要逃脱它们。相反,我只是将JSON中的所有’交换为\“。那么,您每天都会学到一些东西。
问题内容: 为了回答这个问题,我设法通过转义反斜杠来使字符串成为转义字符。 当我尝试将其概括为转义所有转义的字符时,它似乎无能为力: 但是对于特定的转义字符使用相同的方法,它确实起作用: 有一般的方法可以做到这一点吗?应包括,,,等。 问题答案: 使用r’text’将字符串定义为raw,如下面的代码所示:
问题内容: 我从公共API接收到一个JSON对象,该对象本身具有一个转义的JSON字符串。 我如何将此属性转换为实际的JSON对象(未转义),以便使用NewtonSoft Json.NET反序列化整个响应? 问题答案: 这是我根据 Sam 的答案使用的可行解决方案:
问题内容: JavaScript是否具有诸如PHP的(或)函数之类的内置函数,以向需要转义字符串的字符添加反斜杠? 例如,这: 这是一个带有“单引号”和“双引号”的演示字符串。 …会成为: 这是一个带有'单引号'和\“双引号\”的演示字符串。 问题答案:
给定一个字符串,我想用一个斜杠替换所有双斜杠,然后用替换
问题内容: 我有一个Unicode转义的字符串: 我想将此字符串转换为unicode非转义版本 我该怎么做呢? 问题答案: 对其进行编码(使用任何编解码器,utf-8可能都可以),然后使用对其进行解码:
我有一个统一码转义字符串: 我想将此字符串转换为unicode未转义的版本 我该怎么做?