我想使用 unix 命令插入文件
New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP' ' Network_settings.txt");
您不能$New_IP
像在其他脚本语言中那样在 C 字符串中使用。
例如,在 c 中,您必须以这种方式插入变量
char *command;
asprintf(command, "sed -i ' i '%s' ' Network_settings.txt", New_IP);
system(command);
free(command) // if command is useless in your code then free it
将这样的值作为环境变量传递给命令行,并让 shell 扩展它们是最安全的。这避免了大量的字符串转义麻烦。所以也许:
New_IP=strtok(Network_config,delimeter);
setenv("New_IP", New_IP);
system("sed -i \" i $New_IP \" Network_settings.txt");
/* note backshaled \" in string above are for C compiler */
注意:如果New_IP
不小心包含换行符,上面将不起作用,因为sed在使用sed i
命令时希望那些用反斜杠转义。此外,允许换行将允许输入有更多的 sed 命令,这可能会做一些讨厌的事情,例如使用 sedw
命令。所以New_IP
应该为sed清理 definitiley ,但幸运的是,这比清理 shell 简单得多,这可以通过使用 env 变量来避免。