嘿所以我有一个bash命令,根据读取一些文件回显一个字符串。说简单就像这样
for line in `cat file`
do
if [ "$line" == "IwantThisLine" ]
then
echo "True"
fi
done
我把它保存为自己的个人脚本。它叫readRef.sh。所以现在我想在matlab中调用它并将它输出的任何内容存储在变量中!我不完全确定如何做到这一点,我在系统()上使用evalc()时似乎遇到错误。但它可能只是我弄乱报价。
我试过像
这样的东西evalc(system(['./readRef.sh ' bamfile']))
“bamfile”是一个变量,它只是bamfile路径的一个字符串。
我收到此错误。
>> tes = evalc(system(['./readRef.sh ' smplBamFile]))
hg18
??? Undefined function or method 'evalc' for input arguments of type 'double'.
巧合的是,它确实吐出了“hg18”,这就是我想要设置matlab变量的原因。
答案 0 :(得分:3)
哦,我明白了。我认为你根本不需要evalc
。阅读你可以做的system
docs:
[status, result] = system('echo True; echo "I got a loverly bunch of coconuts"')
而result
将是
True
I got a loverly bunch of coconuts
所以就这样做:
[status, result] = system(['./readRef.sh ' smplBamFile])
evalc
无效的原因是它要求其输入为字符串中的Matlab表达式,但您传递的是system
的结果。
你可以尝试:
evalc("system(['./readRef.sh ' smplBamFile])")
了解我如何以system(...)
作为字符串传递?
答案 1 :(得分:0)
您收到此错误的原因是因为system(...)
返回其运行的命令的返回代码,而不是其输出。要捕获其输出,请使用
[~, output] = system(...)
tes = evalc(output);