从 Linux shell 向 C 代码提供输入参数



我的代码的概念是这样的:

#include <stdio.h>
int main(int argc, char *argv[])
{
int num;
FILE *fp;
getint("num",&num); /* This line is pseudo-code. The first argument is key for argument, the second is the variable storing the input value */
fp = inputfile("input"); /* This line is pseudo-code. The argument is key for argument, fp stores the return file pointer */
...
...
exit(0);
}

通常,在编译代码并生成可执行main之后,在命令行中我们编写以下内容来运行代码:

./main num=1 input="data.bin"

但是,如果参数太多,每次运行代码时在命令行中键入是不方便的。所以我正在考虑编写参数并在 Linux shell 中运行。起初我写了这个:

#! /bin/sh
num = 1
input="data.bin"
./main $(num) $(input)

但错误返回:

bash: adj: command not found
bash: input: command not found
bash: adj: command not found
bash: input: command not found

任何人都可以帮助查看和修复它。

您的代码存在三个主要问题:

  1. 分配值时不能在=周围使用空格
  2. 扩展值时,您必须使用${var}而不是$(var)
  3. 在编写代码的方式中,您将字符串1传递,而不是将所需的字符串num=1作为参数传递。

请改用数组:

#!/bin/bash
parameters=(
num=1
input="data.bin"
)
./main "${parameters[@]}"

num=1这里只是一个带有等号的数组元素字符串,与 shell 变量赋值无关。

相关内容

  • 没有找到相关文章

最新更新