我从一个“c”程序调用一个shell脚本,并且在c中有一些变量,我想将这些变量作为参数传递给shell脚本。我尝试使用system()调用shell脚本,但作为参数传递的变量被视为字符串而不是变量。

最佳答案

shell脚本(a.sh):

# iterates over argument list and prints
for (( i=1;$i<=$#;i=$i+1 ))
do
     echo ${!i}
done

C代码:
#include <stdio.h>

int main() {
  char arr[] = {'a', 'b', 'c', 'd', 'e'};
  char cmd[1024] = {0}; // change this for more length
  char *base = "bash a.sh "; // note trailine ' ' (space)
  sprintf(cmd, "%s", base);
  int i;
  for (i=0;i<sizeof(arr)/sizeof(arr[0]);i++) {
    sprintf(cmd, "%s%c ", cmd, arr[i]);
  }
  system(cmd);
}

关于c - 将变量从C程序传递到Shell脚本作为参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18179346/

10-11 20:24