在C中使用bash系统调用来编写进行bash系统调用的C语言

时间:2012-10-21 21:21:47

标签: c bash escaping echo system-calls

我正在玩一个小应用程序(在C中),在运行时会创建一个用文件填充的目录树。它通过使用

形式的一系列行来实现

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

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

具体地,

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

写成

system(echo hello world);

2 个答案:

答案 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中的错误引号未被转义。