$
直接传递字符串echo
$ 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;
}