Предоставить входные параметры для кода C из оболочки Linux - PullRequest
0 голосов
/ 02 июля 2018

Концепция моего кода выглядит так:

#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 Сначала я написал это:

#! /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 Ответ

0 голосов
/ 02 июля 2018

Есть три основных проблемы с вашим кодом:

  1. Вы не можете использовать пробелы вокруг = при назначении значений
  2. Вы должны использовать ${var}, а не $(var) при расширении значений.
  3. При написании кода вы передаете строку 1 вместо требуемой строки num=1 в качестве параметра.

Вместо этого используйте массив:

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

num=1 здесь представляет собой просто строку элемента массива со знаком равенства и не относится к присваиванию переменных оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...