Um ein Skript auszuführen, können Sie Matlab öffnen (Sie können die Ausführung ohne die GUI mit -nodisplay
verhindern und -nodesktop
Flags), führen Sie dann das Skript mit run
aus Befehl, und schließen Sie schließlich matlab mit exit
.
All dies können Sie von einem Terminal aus mit einer einzigen Anweisung erledigen:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"
Matlab gibt jedoch die Willkommensnachricht an die Konsole aus, bevor Ihr Skript ausgeführt wird. Um die Begrüßungsnachricht loszuwerden, überspringen Sie einfach die ersten 11 Zeilen (10 abhängig von Ihrer Matlab-Version) mit tail -n +11
Ihre letzte Anweisung lautet also:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11
Ab R2019a wäre die bevorzugte Methode für Ihr test.m-Skript:
matlab -batch "test"
Dies hat mehrere Vorteile, vor allem keine Notwendigkeit für alle -no
Flags und MATLAB wird mit einem Nicht-Null-Status beendet, wenn test.m (muss im Suchpfad sein) enthält einen Fehler.
Von der Dokumentationsseite, matlab (Linux):
Führen Sie MATLAB-Skripte, -Anweisungen oder -Funktionen nicht interaktiv aus.MATLAB:
- Startet ohne Desktop
- Der Begrüßungsbildschirm wird nicht angezeigt
- Führt Anweisung aus
- Deaktiviert Änderungen an Einstellungen
- Deaktiviert das Toolbox-Caching
- Protokolliert Text in
stdout
undstderr
- Zeigt keine Dialogfelder an
- Beendet automatisch mit Exit-Code 0, wenn Skript erfolgreich ausgeführt. Andernfalls wird MATLAB mit einem Exit-Code ungleich Null beendet.
Erklärung ist MATLAB-Code, der in doppelte Anführungszeichen eingeschlossen ist. If Anweisung der Name einer MATLAB-Funktion oder eines Skripts ist, geben Sie die Dateierweiterung nicht an. Jede erforderliche Datei muss sich im MATLAB-Suchpfad oder im Autostart-Ordner befinden.
Verwenden Sie den -batch
Option in nicht interaktiven Scripting- oder Befehlszeilenabläufen. Verwenden Sie diese Option nicht mit -r
Option.
Um zu testen, ob eine Sitzung von MATLAB im Stapelmodus ausgeführt wird, rufen Sie batchStartupOptionUsed
auf Funktion.
Beispiel:-batch "myscript"
Ich habe ein einfaches Shell-Skript mit dem Namen runm
erstellt und trage meinen Pfad ein:
$ runm mymatlab.m
Skript:
# simple script to run matlab script
if [ $# -eq 0 ]
then
echo "please pass m script"
fi
matlab -nodisplay -nosplash -nodesktop -r "run('$1');"