Чтобы прочитать что-то из внешней команды, вы можете пойти двумя путями: 1: прочитать непосредственно вывод команды;и 2: перенаправить вывод команды в какое-то известное место и прочитать оттуда.
COMMAND = "mpirun -n $ i $ EXE >> $ RES"
echo$ COMMAND
Кажется, что вы хотите прочитать какой-то вывод из "mpirun", и вы решили перенаправить его вывод. В вашем коде вывод команды mpirun будет записан (предупреждение: добавлено ) в файл с именем exc3_1.d
. Вероятно, вы хотите выдать что-то вроде:
COMMAND="mpirun .... > ..."
eval $COMMAND # execute the command
read yourvar < exc3_1.d # read from where mpirun wrote to
НО, я думаю, что вместо перенаправления вывода mpirun, было бы лучше прочитать прямо с него:
yourvar=$($COMMAND)
Приведенная выше строка выполняет то, что указано в скобках, принимает вывод и сохраняет в переменной с именем «yourvar».
[РЕДАКТИРОВАТЬ после комментария] Я думаю, что лучшим вариантом является запуск вашей команды, как показано выше, особенноесли вы используете многозадачность. Но я понятия не имею, для чего вы используете mpirun ... Я говорю это, потому что есть много способов, но все они справляются со "стандартным выводом", механизмом, который вы должны понять, прежде чем продолжать.
Во второй части разверните контент, передав его в программу на C, это другой вопрос - возможно, другой вопрос на этом сайте может помочь. Опять же, есть два способа, через scanf ():
echo $myvalue | $mycommand # pass to standard input
(программа, запускаемая $ mycommand, читает через scanf ()), или:
eval "$mycommand $myvalue"
(подходит для передачиmyvalue как параметр). Надеюсь, это поможет.