我的代码的概念是这样的:
#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
任何人都可以帮助查看和修复它。
您的代码存在三个主要问题:
- 分配值时不能在
=
周围使用空格 - 扩展值时,您必须使用
${var}
而不是$(var)
。 - 在编写代码的方式中,您将字符串
1
传递,而不是将所需的字符串num=1
作为参数传递。
请改用数组:
#!/bin/bash
parameters=(
num=1
input="data.bin"
)
./main "${parameters[@]}"
num=1
这里只是一个带有等号的数组元素字符串,与 shell 变量赋值无关。