以下python代码
env.Command(versionFile, allSrcs + [".git/index", "SConstruct"],
'echo "#define ZSIM_BUILDDATE \\""`date`\\""\\\\n#define ZSIM_BUILDVERSION \\""`python misc/gitver.py`\\""" >>' + versionFile)
Run Code Online (Sandbox Code Playgroud)
产生这样的输出
$ cat build/opt/version.h
#define ZSIM_BUILDDATE "Sat Apr 19 13:31:41 CET 2014"\n#define ZSIM_BUILDVERSION "master:10:a8c417b:2fc 3+ 2- d5cec7e7"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它不明白这'\n'意味着什么new line+carriage return.相反,它只是打印'\'和'n'.
我该如何解决这个问题?
PS:这个问题是一个跟进这一个.上一篇文章是一般的,没有指出问题.我还使用scons进行构建.任何帮助,将不胜感激.谢谢
这实际上不是python或C++问题,因为你在抱怨shell引用的行为(当你使用类似的东西时,一些shell允许转义符如\n中的转义码echo -e).
因此,如果你想获得一个换行符,请尝试在Python中生成它(引用字符串中的换行符将使其成为echo的参数),而不是生成一些shell不会进一步处理的转义序列.