Para ejecutar un script, puede abrir Matlab (puede evitar ejecutarlo sin la GUI usando -nodisplay
y -nodesktop
banderas), luego ejecute el script usando el run
comando, y finalmente cierre matlab usando exit
.
Puedes hacer todo esto desde una terminal con una sola instrucción:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"
Sin embargo, Matlab envía el mensaje de bienvenida a la consola antes de ejecutar el script. Para deshacerse del mensaje de bienvenida, salte las primeras 11 líneas (10 dependiendo de su versión de Matlab) usando tail -n +11
Entonces su instrucción final será:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11
A partir de R2019a, el método preferido sería, para su secuencia de comandos test.m:
matlab -batch "test"
Esto tiene varias ventajas, principalmente que no se necesitan todos los -no
flags y MATLAB saldrá con un estado distinto de cero si test.m (debe estar en la ruta de búsqueda) contiene un error.
Desde la página de documentación, matlab (Linux):
Ejecutar secuencias de comandos, instrucciones o funciones de MATLAB de forma no interactiva. MATLAB:
- Comienza sin el escritorio
- No muestra la pantalla de bienvenida
- Ejecuta sentencia
- Desactiva los cambios en las preferencias
- Deshabilita el almacenamiento en caché de la caja de herramientas
- Registra texto en
stdout
ystderr
- No muestra cuadros de diálogo
- Sale automáticamente con el código de salida 0 si script se ejecuta con éxito. De lo contrario, MATLAB termina con un código de salida distinto de cero.
declaración es el código de MATLAB entre comillas dobles. Si declaración es el nombre de una función o script de MATLAB, no especifique la extensión del archivo. Cualquier archivo requerido debe estar en la ruta de búsqueda de MATLAB o en la carpeta de inicio.
Usa el -batch
opción en secuencias de comandos no interactivas o flujos de líneas de comandos. No use esta opción con el -r
opción.
Para probar si una sesión de MATLAB se está ejecutando en modo por lotes, llame al batchStartupOptionUsed
función.
Ejemplo:-batch "myscript"
Creé un script de shell básico llamado runm
y poner en mi camino:
$ runm mymatlab.m
Guión:
# simple script to run matlab script
if [ $# -eq 0 ]
then
echo "please pass m script"
fi
matlab -nodisplay -nosplash -nodesktop -r "run('$1');"