我正在玩一个小应用程序(在C中),在运行时会创建一个用文件填充的目录树。它通过使用
形式的一系列行来实现 system("echo \"lump = \" >> ./newdirectory/newfile.c");
这个工作正常,除了当我试图让C行写入一个本身包含system("echo");
调用的新文件时。
具体地,
system("echo \"system(\"echo hello world\");\" >> ./newdirectory/newfile.c");
写成
system(echo hello world);
答案 0 :(得分:3)
由于您希望转义字符按原样显示,因此您也需要转义它们。是的,你可以逃脱转义字符。类似的东西:
"\\\""
这会导致输出\
后跟"
。
答案 1 :(得分:2)
这是疯狂的游戏。 但我认为,这种疯狂的正确方法是编写C函数来逃避字符串。
内部字符串必须双重转义。
system("echo \"system(\\\"echo hello world\\\");\" >> ./newdirectory/newfile.c");
Othervise第一个C unescape文字字符串和shell获取
echo "system("echo hello world");" >> ./newdirectory/newfile.c
echo中的错误引号未被转义。