嗨,我有这个bash代码
#!/bin/bash
textb="\n 1 \n 2 \n 3 \n 4"
jq --arg textb "$textb" '. | {plain_text: ( $textb + desc.envi )'
当我运行命令和此赠品的下一个示例
#!/bin/bash
\\n1 \\n2 \\n3 \\n4
为什么jq加和额外的“ \”?我怎么了? 我尝试这样的
textb="\n" 1 "\n" 2 "\n" 3 "\n" 4"
但是我有这个结果
n1 n2 n3 n4
Thx
答案 0 :(得分:1)
\n
并不意味着bash双引号字符串中的换行/换行符。只是反斜杠+小写字母n。
如果您使用换行符而不是反斜杠和Ns,它们将对您想要的方式进行编码:
textb="
1
2
3
4"
jq -n --arg textb "$textb" '."the string is:" = $textb'
输出:
{
"the string is:": "\n1\n2\n3\n4"
}
以下是将文字换行符放入bash变量的其他几种等效方法:
textb=$'\n1\n2\n3\n4'
textb=$(printf '\n%s' {1..4})