Como obtenho o texto formatado como na passagem direta de uma string?

Como obtenho o texto formatado como na passagem direta de uma string?

passagem direta de uma string com $toecho

$ echo $'#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'

expande as sequências de escape ANSI incorporadas

#include <iostream>
int main() {
  std::cout << "Hello World!" << std::endl;
}

Atribuí a string a uma variável

codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'

e então ecoar a variável

echo $codeStr

Obtive a string bruta em vez de um texto formatado.

Como obtenho o texto formatado como na passagem direta de uma string?

Responder1

Usar-etroque paraenable interpretation of backslash escapes.

$ codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'
$ echo -e $codeStr 
#include <iostream>
int main() {
 std::cout << \"Hello World!\" << std::endl;
}

Abordar o comentário @steeldriver printftambém funciona (e interpreta a sequência corretamente).

$ codeStr='#include <iostream>\nint main() {\n  std::cout << \"Hello World!\" << std::endl;\n}'
$ printf "$codeStr"
#include <iostream>
int main() {
  std::cout << "Hello World!" << std::endl;
}

informação relacionada