Переменная JQ добавить дополнительные \ - PullRequest
0 голосов
/ 18 сентября 2018

Привет, у меня есть этот код 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

1 Ответ

0 голосов
/ 18 сентября 2018

\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})
...