是的,您需要在函数参数之间使用逗号,将其用单引号引起来,以便matlab将其视为字符串,并且不需要运行。
TestsPath="'a/b/Tests/','b/c/Tests/','c/d/Tests/'"
matlab -nosplash -nodesktop -r "RunAllTests(${TestsPath})"
如果您不想在参数之间添加逗号,则可以将TestsPath作为单个字符串传递,并在matlab中将其拆分为多个参数。
TestsPath="'a/b/Tests/ b/c/Tests/ c/d/Tests/'"
matlab -nosplash -nodesktop -r "RunAllTests(strsplit(${TestsPath}))"
,
如果您的路径中没有空格,则应执行以下操作:
matlab -nosplash -nodesktop -r "RunAllTests ${TestsPath}"
使用您的示例,与在Matlab中运行以下示例相同:
RunAllTests a/b/Tests/ b/c/Tests/ c/d/Tests/
这将在您的函数中产生varargin = {'a/b/Tests/','c/d/Tests/'}
。以这种方式传递给函数的每个参数都被视为一个字符数组。
,
您可以使用-printf
的{{1}}操作确保文件名用引号引起来:
find
这将返回
TestsPath=$(find . -path "Tests" -printf "'%p' ")
可以按照command syntax的建议替换成MATLAB Alex函数调用:
'a/b/Tests/' 'b/c/Tests/' 'c/d/Tests/'
请注意,如果目录名称中有空格,则需要使用这些引号。
请注意,自MATLAB R2019b起,不推荐使用matlab -nosplash -nodesktop -r "RunAllTests ${TestsPath};"
,而推荐使用新的-r
命令行选项:
-batch
这在所有平台(包括Windows!)上均相同。
本文链接:https://www.f2er.com/3146134.html