Я написал функцию в Octave, которая принимает строку, прочитанную из файла (по одной строке за раз) в качестве входного аргумента. Я использую сценарий bash для чтения строки за раз из файла, а затем передаю это в качестве аргумента функции октавы из сценария.
Мой bash-скрипт выглядит так:
#!/bin/bash
while read line
do
octave --silent --eval 'myOctaveFunc("${line}")'
done < "inFileName"
Когда я выполняю приведенный выше скрипт, октава выдает такие ошибки, как:
error: called from:
error: /usr/share/octave/3.2.3/m/miscellaneous/fullfile.m at line 43, column 11
error: evaluating argument list element number 2
error: evaluating argument list element number 1
error: /usr/libexec/octave/packages/gsl-1.0.8/i386-redhat-linux-gnu-api-v37/PKG_ADD at line 47, column 1
error: addpath: expecting all args to be character strings
error: addpath: expecting all args to be character strings
error: addpath: expecting all args to be character strings
error: addpath: expecting all args to be character strings
и так далее..
Мне удалось запустить сценарий октавы myOctaveFunc.m
с входными аргументами, такими как helloWorld
, из командной строки. Проблема возникает, когда я пытаюсь запустить его из сценария bash.
Мои вопросы:
1. Как мне запустить функцию octave из сценария bash?
2. Я использую gvim
для редактирования сценария bash. Когда я набираю строку для вызова сценария октавы, я вижу, что ${line}
окрашена иначе, чем в обычных обстоятельствах. Это из-за ''
, используемого для вызова функции октавы? Если да, то стоит ли мне об этом беспокоиться?
octave --silent --eval 'myOctaveFunc(helloWorld)'
, тогда как должно бытьoctave ... 'myOctaveFunc("helloWorld")'
. Я пробовалoctave ... 'myOctaveFunc(\"helloWorld\")'
. Это отлично работает в bash сecho
, но не работает при вызове сценария октавы. - person Sriram   schedule 27.07.2011