1

我正在玩一个小应用程序(在 C 中),它在运行时会创建一个目录树,并用文件填充该目录树。它通过使用一系列形式的行来做到这一点

system("echo \"lump = \" >> ./newdirectory/newfile.c");

这工作正常,除了当我尝试让它将一行 C 写入本身包含system("echo");调用的新文件时。

具体来说,

system("echo \"system(\"echo hello world\");\" >> ./newdirectory/newfile.c");

写成

system(echo hello world);

4

2 回答 2

3

由于您希望转义字符按原样显示,因此您也需要对它们进行转义。是的,您可以转义转义字符。就像是:

"\\\""

这导致输出 a\后跟 an "

于 2012-10-21T21:28:06.793 回答
2

这是一场疯狂的比赛。但我认为,这种疯狂的正确方法是编写 C 函数来转义字符串。

内部字符串必须进行双重转义。

system("echo \"system(\\\"echo hello world\\\");\" >> ./newdirectory/newfile.c");

否则首先 C unescape 文字字符串和 shell 获取

echo "system("echo hello world");" >> ./newdirectory/newfile.c

回声中的错误引号没有逃脱。

于 2012-10-21T21:40:43.997 回答