2012-04-02 139 views
1

我想知道如何传递单引号作为matlab中的一个参数。我正在运行一个bash脚本,它接受一串整数并从中创建一个数组。 bash程序是这样的:Matlab传递单引号

read -a array <<< "$1" 
for i in ${array[@]} 
do 
    echo $i 
done 

在matlab GUI我想这样做是为了测试这个功能:

>> string = '1 2 3 4 5' 
>> unix(['script.sh ' string]) 

,它给

1 

ans = 

0 

,但它不会打印整个阵列!在bash如果我做...

script.sh '1 2 3 4 5' 

我得到

1 
2 
3 
4 
5 

我的理论是,MATLAB是走在数字和bash脚本是刚刚看完第一个参数“1”进入阵列并打印它。所以,如果我能以某种方式传递由单引号封装的字符串,那么它应该工作。

回答

2

问题是Matlab的unix()命令默认只返回一个状态变量。你必须告诉它返回标准输出,这在the Matlab documentation for this function中提到。您看到的0值是状态变量,而0表示“成功”。

你想要做的是:

[status, result] = unix(['script.sh ' string]); 
disp(result); 

此外,here is a link这有助于解释串在Matlab格式,包括增加一个单引号为一个字符串的例子。这是通过在字符串内连续两次重复单引号符号来实现的。所以'''产生',因为在两个外面的单引号内,我已经放置了两个连续的单引号。这与在键盘上使用双引号按键不同,后者会产生双引号。所以你可以写数组字符串为:

>> string = '''1 2 3 4 5''' 
string = '1 2 3 4 5' 
+0

如果你看看原来的帖子,你可以看到它回显'1'。如果你打算保存标准输出,我认为这种技术最常用。但我需要一种方法将单引号传递给bash脚本。 – 2012-04-02 22:53:47

+0

我看到我张贴就像你编辑哈哈,这正是我需要的,谢谢人:) – 2012-04-02 22:55:19