我在Octave中编写了一个函数,它从文件中读取一行(一次一行)作为输入参数.我使用bash脚本一次从文件中读取一行,然后将其作为参数传递给脚本中的八度函数.
我的bash脚本看起来像这样:
#!/bin/bash while read line do octave --silent --eval 'myOctaveFunc("${line}")' done < "inFileName"
当我执行上面的脚本时,octave会抛出如下错误:
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.如何从bash脚本中运行八度函数?
2.我正在使用gvim编辑bash脚本.当我输入行调用八度脚本时,我发现与正常情况相比,${line}的颜色不同.这是因为”用于调用八度音程功能?如果是这样,我应该担心吗?
单引号阻止shell替换变量:
octave --silent --eval "myOctaveFunc(\"$line\")"
如果octave允许你使用单引号引用字符串,它看起来会更清晰(在双引号内,单引号没有特殊含义):
octave --silent --eval "myOctaveFunc('$line')"
此外,从vim,请确保以unix格式保存文件,以便每行不以回车符结束:: set ff = unix
原文地址:https://www.jb51.cc/bash/384475.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。