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-e
troque 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 printf
també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;
}