如果我运行此代码
#!/bin/bash
set -x
http --json http://example.com \
value=$'hello\r\n\r\nworld'
我在标准输出中有两个回车我在里面value
http --json http://example.com 'value=hello
world'
但是,如果我value
在变量中有字符串,我找不到在标准输出中获得相同字符串的方法。例如,如果我运行
#!/bin/bash
set -x
variable="hello\r\n\r\nworld"
http --json http://example.com \
value=$''"$variable"''
我没有换行符,而是\r\n\r\n
字符
http --json http://example.com 'value=hello\r\n\r\nworld'
如何让换行符从变量内的值开始?
我无法更改variable="hello\r\n\r\nworld"
,但我可以在它和命令运行之间添加代码。
对我来说的方式是
$'...'
在变量赋值中使用,如代替
或用于
printf
处理转义(这应该适用于任何 POSIXy shell):虽然请注意,如果有的话,命令替换会吃掉最后的换行符,所以你可能必须通过在末尾添加和删除一个虚拟字符来解决这个问题:
然后像往常一样使用结果变量。