如何在C程序中将shell变量作为命令行参数传递

时间:2013-02-17 19:59:26

标签: c shell command

我想将shell变量作为命令行参数传递给C程序。为了练习这个,我写了一个基本的C程序,如下:

#include<stdio.h>  
#include<stdlib.h>
int main(int argc, char **argv){  
    int i, a, prod=1 ;
    if(argc==2)
    a = atoi(argv[1]);
    else 
    a = 8 ; 
    printf("value of cmd: %d\n",a);
    for(i=1; i <= a ; i++)
        prod *= i ;
    printf("factorial %d!= %d\n",a, prod);
}

现在通过shell脚本变量传递参数,我编写了一个小脚本,如下所示:

#!/bin/bash  
echo "Welcome to the small shell scripting!!!"
for ((i=4; i<9;i++))
do
        "../programming/ctest/arg $i"
done

../ programming / ctest / arg 是上述C程序的可执行文件。但是当我运行脚本输出时 ../ programming / ctest / arg 4没有这样的文件或目录等等。在没有shell变量的情况下运行它提供了正确的输出。 请仔细看看,如果这个问题得到解决,我会将其用于进一步的自动化

1 个答案:

答案 0 :(得分:2)

"../programming/ctest/arg $i"

你需要删除引号好先生

../programming/ctest/arg $i

详细说明,不删除引号Bash会将整个字符串解释为命令,而不是像你想要的那样将命令和参数解释。