1

我想将 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 no such file or directory等等。在没有 shell 变量的情况下运行它会给出正确的输出。请看一下,如果这个问题解决了,我会用它来进一步自动化

4

1 回答 1

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

你需要删除引号好先生

../programming/ctest/arg $i

详细地说,在不删除引号的情况下,Bash 会将整个字符串解释为命令,而不是您想要的命令和参数。

于 2013-02-17T20:02:09.337 回答