2017-05-09 277 views
0

我想从C程序中调用/执行一个bash,其中包括在脚本的命令行上传递的任意数量的参数。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程序

+0

http://stackoverflow.com/questions/3736210/how-to-execute-a-shell-script-from-c-in-linux –

+0

谢谢,我已经得到了一些C程序已经在服务器上执行另一个脚本。问题是收集在命令行上传递的任意数量的参数,并将其传递给C程序执行的bash脚本。 – Jondi

+0

@Badda没有兄弟。正如你可以看到那个线程只有我的问题的一部分。该线程仅讨论如何在Linux中从C执行shell脚本。我的问题是执行一个包含脚本命令行参数的shell。 – Jondi

回答

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 
+0

嘿,它部分适合我:) – Jondi