如何使用unix命令插入文件?

时间:2013-03-18 09:13:25

标签: c unix command

我想使用unix命令

插入文件
New_IP=New_IP=strtok(Network_config,delimeter);
system("sed -i ' i '$New_IP'  ' Network_settings.txt");

2 个答案:

答案 0 :(得分:0)

最安全的做法是将这样的值传递给命令行作为环境变量,并让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命令,这可能会做一些令人讨厌的事情,例如使用sed w命令。所以New_IP应该定义为 sed 进行消毒,但幸运的是,它比对shell进行消毒要简单得多,这可以通过使用env变量来避免。

答案 1 :(得分:0)

您不能像在其他脚本语言中那样在C字符串中使用$New_IP

在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