pasar directamente una cuerda con $
toecho
$ echo $'#include <iostream>\nint main() {\n std::cout << \"Hello World!\" << std::endl;\n}'
expande las secuencias de escape ANSI incrustadas
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
}
Asigné la cadena a una variable.
codeStr='#include <iostream>\nint main() {\n std::cout << \"Hello World!\" << std::endl;\n}'
y luego repetir la variable
echo $codeStr
Obtuve la cadena sin formato en lugar de un texto formateado.
¿Cómo obtengo el texto formateado como al pasar directamente una cadena?
Respuesta1
Usar-e
cambiar aenable 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 el comentario de @steeldriver printf
también funciona (e interpreta la secuencia correctamente).
$ 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;
}