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

标签 c shell user-input

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

#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 变量赋值无关。

关于c - 从 Linux shell 向 C 代码提供输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141615/

相关文章:

user-interface - flutter 持续时间用户输入

c - 打印某些数组

c++ - c、共享库中的c++内存

python - 用 C 和 Python 重写伪代码

java - 如何在 shell 脚本更新文件时监视 java 中的文件

java - Java/shell 中的 Base64 编码输出不同

python - 我怎样才能让 Python 程序使用通过模块 sys 运行的命令来杀死自己?

java - 交换数组java的两个邻域元素

c - C中n个数字按升序排列的不同组合

c++ - 如何对控制台输入类进行单元测试?