c - 如何在 bash 脚本中运行一个 c 程序并给它一些值?

标签 c bash parameters

我想用 bash 脚本在 C 中运行我的程序,另外,我希望我的 bash 脚本将一些值传递给我在 C 中的程序。这是我的 C 代码(非常简单,它读作输入数学运算,例如: 2 + 3, 将其保存到文件,仅此而已):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int howMany = 0, i = 0;
    float num1, num2;
    char sign;

    FILE *fp;
    if((fp=fopen("operations.txt", "w"))==NULL)
    {
        exit(-1);
    }

    printf("How many math operations would you like to pass?\n> ");
    scanf("%d", &howMany);

    for(i=0; i<howMany; i++)
    {
        printf("Pass %d operations like this: {num1 sign num2}:\n> ", i+1);
        scanf("%f %c %f", &num1, &sign, &num2);

        fprintf(fp, "%f ", num1);
        fprintf(fp, "%c ", sign);
        fprintf(fp, "%f", num2);
        if(i < howMany-1)
            fprintf(fp, "\n");
    }

    fclose(fp);
    return 0;
}

然后,我有我的 bash 脚本,我希望它在 C 中运行我的程序并给它 9 个数学运算:1+2、3+4、... 9+10。我是这样做的:

#!/bin/bash

n=9
echo "$n" | ./app

for (( i=1; $i < 10; i++ )) ; do
       let "c=$i+1" 
       echo $i "+" $c | ./app
done

但有一个问题,它不能像我希望的那样工作。请帮忙 - 只有使用这个 bash 脚本,我的 C 程序才能运行得很好。

最佳答案

问题是你要多次执行你的./app,每次都给它一小部分。

您可以对命令进行分组,然后将其全部通过管道传输到您的应用程序的一个实例,如下所示:

#!/bin/bash
{ 
n=9
echo "$n" 

for (( i=1; $i < 10; i++ )) ; do
       let "c=$i+1" 
       echo $i "+" $c
done
} | ./app

关于c - 如何在 bash 脚本中运行一个 c 程序并给它一些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14578858/

相关文章:

c - C 程序在查找整数三元组 (x,y,z) 时出错,使得 n^x + n^y = n^z 对于给定的 n 范围

c++ - 如何在 C++ 中将前面的函数参数设置为其默认值?

c++ - Shell Execute 将窗口置于最前面

c++ - 如何通过读取文件将不同数据类型的数据推送到一个 vector 中?

java - java的image magick问题

bash - 使用 vanilla Ubuntu,一个用于搜索和替换/取消注释代码块的脚本?

bash - 在命令行上解析 shell 脚本的输入

command-line - 如何将带有值的命令行参数传递给 Inno Setup Compiler,以便我可以在我的代码中使用它们?

javascript - js文件包含传递参数

C错误C2660 : 'Menu' : function does not take 3 arguments