【问题标题】:Running shell script from C [duplicate]从C运行shell脚本[重复]
【发布时间】:2011-06-25 09:51:52
【问题描述】:

可能重复:
Running a shell command in a c program

我正在从 C 运行一个 shell 脚本。它是使用 system() 执行的。如何将参数传递给这个脚本?

【问题讨论】:

  • 只需将它们传递到您分发给system 的字符串中?我错过了什么吗?
  • 请注意,使用 system() 在很多方面都是一个坏主意,请参阅此处了解原因webinmind.net/bpc.html#six
  • 他想从 C 中运行一个 shell 脚本,而不是一个 shell 命令。差别很大,因此不是重复的

标签: c shell


【解决方案1】:

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);

【讨论】:

    【解决方案2】:
    system("scriptname arg1 arg2")
    

    【讨论】:

    • 我之前做过,但是 echo $1 和 echo $2 没有打印任何东西
    • 您可能将字符串作为参数传递。如果您使用的是字符串,则必须使用 'arg'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 2013-08-06
    相关资源
    最近更新 更多