C程序执行bash脚本+传递命令行参数

时间:2017-05-09 06:20:16

标签: python c linux bash shell

我想从C程序调用/执行bash,包括在脚本的命令行上传递的任意数量的参数。

我找到了一个相关的帖子How to pass command line arguments from C program to the bash script?,但我的情况是传递给命令行的参数数量可能会有所不同,这不是固定的数字。因此,C程序必须收集任意数量的命令行参数,并将其传递给bash脚本以执行。

这可能吗?。

为了给你一个明确的想法,当我运行我的测试bash脚本时,我得到了预期的输出。

# ./bashex.sh
No arguments passed

# ./bashex.sh hello world
Arguments passed are #1 = hello
Arguments passed are #2 = world

# ./bashex.sh hello world Hi
Arguments passed are #1 = hello
Arguments passed are #2 = world
Arguments passed are #3 = Hi

我不知道如何执行这样的脚本,包括来自C程序的命令行参数

1 个答案:

答案 0 :(得分:0)

几乎没有最低限度,没有选中,./foo如果没有参数则会出现段错误,请自担风险使用:

$ cat foo.c
#include<stdlib.h>
#include<string.h>

int main (int argc, char *argv[])
{
  char bar[100]="./bar.sh ";
  strcat(bar, argv[1]);
  system(bar);
}

剧本:

$ cat bar.sh
#!/bin/sh
echo $1

执行:

$ ./foo baz
baz