我想从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 :(得分: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