我正在运行来自C.的shell脚本。它是使用system()执行的。如何将参数传递给这个脚本?
答案 0 :(得分:7)
system
采用包含整个命令行的单个字符串,因此您将传递
system("/your/shell/script 'argument 1' 'argument 2'");
使用system
并不是一个好主意,因为你必须自己逃避所有元字符 - 即使是空格也是一个问题,正如你在上面所看到的那样。您正在寻找exec *函数之一,例如execv。它的第一个参数是程序的名称(在你的情况下是/bin/sh
或shell脚本本身),它的第二个参数是以NULL结尾的参数字符串列表:
char* program = "/your/shell/script";
char* args[3];
args[0] = "argument 1";
args[1] = "argument 2";
args[2] = NULL;
execv(program, args);
答案 1 :(得分:4)
system("scriptname arg1 arg2")