使用变量在C文件中调用bash命令

时间:2017-09-08 07:27:40

标签: c linux bash

我希望我的问题很明确。我需要读取C中的文件,存储文件的内容,然后在bash脚本中使用此变量。

例如,有一个名为" test.txt"的文件。其中包含" aaa"。这是C中的电话:

#include <signal.h>
#include <time.h>

char ch;
FILE *fp;

int main(int argc, char **argv) {
    fp = fopen("test.txt", "r");
    char contents[9] = "";
    if( fp == NULL ) {
      perror("Error while opening the file.\n");
      exit(EXIT_FAILURE);
    }

    int i = 0;
    while( ( ch = fgetc(fp) ) != EOF ) {
      contents[i]=ch;
      i++;
    }
    contents[9]=0;
    fclose(fp);
    system( "echo 'hi'");
    puts(contents);
}

现在我需要使用bash脚本来读取包含&#34; aaa&#34;的文件名。在它的名字。

system("cat /home/user/$contents.txt");

我已经尝试过寻找其他一些解决方案,但到目前为止我只遇到过popen,我没能实现。如果我使用bash,它是一个非常简单的一个衬垫,因此我试图实现它。还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,也许你可以通过环境变量将contents传递给bash。

http://www.gnu.org/software/libc/manual/html_node/Environment-Access.html#Environment-Access

这是一个示例代码:

#include <stdlib.h>
int main(){
  char * message = "hello";
  setenv("contents", message, 1);
  system("echo $contents");
}

此脚本的输出是

hello