我想将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变量的情况下运行它提供了正确的输出。 请仔细看看,如果这个问题得到解决,我会将其用于进一步的自动化
答案 0 :(得分:2)
"../programming/ctest/arg $i"
你需要删除引号好先生
../programming/ctest/arg $i
详细说明,不删除引号Bash会将整个字符串解释为命令,而不是像你想要的那样将命令和参数解释。