MATLAB中的Bash脚本



我有一个bash脚本,我想在MATLAB中执行。我用system((来执行它。但是当它执行时,我得到

docker: command not found

我在脚本中使用docker命令,并将其正确安装在我的计算机中。如果我使用与在MATLAB中从system((调用中运行的命令完全相同的命令从终端运行脚本,它会正常工作。在某种程度上,如果我只是从MATLAB函数(最后一行(中删除bash脚本执行调用,然后运行该函数,然后从终端运行脚本,一切都会正常工作。

例如,这里有一个MATLAB函数:

function foo(container_id)
% Copies this file to the root of a docker container given by container_id
system(['./copy_foo.sh ' container_id])
end

这是bash脚本

#!/bin/bash
docker cp foo.m $1:/root

从终端运行

./copy_foo.sh CONTAINER_ID

产生期望的结果。从命令窗口运行Matlab函数

foo('CONTAINER_ID')

收益率:

docker: command not found

MATLAB在启动时更改环境变量。特别地,LD_LIBRARY_PATHPATH受到影响。有两种解决方案:

  1. 使用docker可执行文件的显式路径。Bash脚本将包含行/path/to/docker cp foo.m $1:/root

  2. 在运行脚本之前,请确保环境已正确初始化。您的MATLAB脚本将包含行system(['bash --login -c ./copy_foo.sh ' container_id])(或类似的东西,我还没有测试过…(

相关内容

  • 没有找到相关文章

最新更新