прямая передача строки с помощью $
toecho
$ echo $'#include <iostream>\nint main() {\n std::cout << \"Hello World!\" << std::endl;\n}'
расширяет встроенные управляющие последовательности ANSI
#include <iostream>
int main() {
std::cout << "Hello World!" << std::endl;
}
Я присвоил строку переменной
codeStr='#include <iostream>\nint main() {\n std::cout << \"Hello World!\" << std::endl;\n}'
и затем вывести переменную
echo $codeStr
Я получил необработанную строку, а не форматированный текст.
Как получить отформатированный текст, как при прямой передаче строки?
решение1
Использовать-e
переключить наenable 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;
}
Обращение к комментарию @steeldriver printf
также работает (и последовательность интерпретируется правильно).
$ 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;
}