Main Content

运行外部命令、脚本和程序

您可以使用 ! 操作符或 system 函数从 MATLAB® 命令行中执行操作系统命令。

shell 转义函数

感叹号字符 (!) 有时也称为 Bang,是一个 shell 转义字符! 字符指示输入行的其余内容是针对操作系统的命令。操作系统决定了您能够为命令提供的输入参量列表的最大长度。使用 !,无需退出 MATLAB 即可调用实用工具或其他可执行程序。

例如,以下代码将在 UNIX® 平台上使用 vi 编辑器中打开名为 yearlystats.m 的文件。

!vi yearlystats.m

在外部程序完成或您退出程序后,操作系统会将控制权返回给 MATLAB。要在后台模式下运行应用程序或在单独的窗口中显示输出,请在行尾添加 &

例如,以下语句将打开 Microsoft® Excel® 程序并将控制权返回给命令提示符,以便您能够继续运行 MATLAB 命令。

!excel.exe &

在 Windows® 平台上,以下命令将在 DOS 窗口中显示结果。

!dir &

注意

要在阶乘表达式中使用感叹号,请调用 factorial 函数。

返回结果和状态

要运行返回结果和状态的程序,请使用 system 函数。

指定环境变量

要使用特定的环境变量执行操作系统命令,请将针对操作系统的所有命令包含在系统调用中。这适用于 MATLAB ! (Bang)、systemdosunix 函数。要分隔命令:

  • 在 Windows 平台上,使用 &(与符号)

  • 在 UNIX 平台上,使用 ;(分号)

也可以在启动 MATLAB 之前设置环境变量。

在系统路径以外运行 UNIX 程序

当包含该文件的文件夹不在对 MATLAB 可见的 UNIX 系统路径上时,您可以从 MATLAB 中运行 UNIX 程序。要查看对 MATLAB 可见的路径,请在 MATLAB 命令提示符下键入以下命令。

getenv('PATH')

您可以为当前 MATLAB 会话修改系统路径,也可以跨后续 MATLAB 会话修改系统路径,如以下主题中所述:

当前 MATLAB 会话

您可以为当前 MATLAB 会话修改系统路径。当您重新启动 MATLAB 时,该文件夹将不再位于系统路径上。

要修改系统路径,请执行以下操作之一。

  • 将 MATLAB 中的当前文件夹更改为包含您要运行的程序的文件夹。

  • 在命令提示符下键入以下命令。

    path1 = getenv('PATH')
    path1 = [path1 ':/usr/local/bin']
    setenv('PATH', path1)
    !echo $PATH 

在当前 shell 会话中跨 MATLAB 会话

您可以在 shell 会话中修改系统路径。当您在当前 shell 会话中重新启动 MATLAB 时,该文件夹仍然位于系统路径上。但是,如果您重新启动 shell 会话,然后重新启动 MATLAB,该文件夹将不再位于系统路径上。

要在 shell 中将文件夹添加到系统路径,请执行以下操作:

  1. 退出 MATLAB。

  2. 根据所使用的 shell,在系统命令提示符下键入以下命令之一,其中 myfolder 是包含您要运行的程序的文件夹:

    • 对于 bash 或相关 shell:

      export PATH="$PATH:myfolder"
      
    • 对于 tcsh 或相关 shell:

      setenv PATH "${PATH}:myfolder"
      
  3. 启动 MATLAB。

  4. 在 MATLAB 命令行窗口中,键入:

    !echo $PATH
    

跨所有 MATLAB 会话

要跨 shell 和 MATLAB 会话修改系统路径,请按在 MATLAB 启动文件中指定启动选项中所述在 MATLAB 启动文件中添加以下命令。

path1 = getenv('PATH')
path1 = [path1 ':/usr/local/bin']
setenv('PATH', path1)
!echo $PATH 

macOS 上运行 AppleScript

macOS 平台上,不能直接从 MATLAB 中运行 Apple AppleScript 程序。要运行 AppleScript 命令,请使用 MATLAB unix! (Bang) 函数调用 Apple macOS osascript 函数。

另请参阅