Per eseguire uno script puoi aprire Matlab (puoi impedire di eseguirlo senza la GUI usando -nodisplay
e -nodesktop
flags), quindi eseguire lo script utilizzando il run
comando e infine chiudi matlab usando exit
.
Puoi fare tutto questo da un terminale con una sola istruzione:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;"
Tuttavia Matlab invia il messaggio di benvenuto alla console prima di eseguire lo script. Per eliminare il messaggio di benvenuto basta saltare le prime 11 righe (10 a seconda della versione di Matlab) usando tail -n +11
Quindi la tua istruzione finale sarà:
matlab -nodisplay -nosplash -nodesktop -r "run('path/to/your/script.m');exit;" | tail -n +11
A partire da R2019a, il metodo preferito sarebbe, per il tuo script test.m:
matlab -batch "test"
Questo ha diversi vantaggi, principalmente non c'è bisogno di tutti i -no
flag e MATLAB uscirà con uno stato diverso da zero se test.m (deve essere nel percorso di ricerca) contiene un errore.
Dalla pagina della documentazione, matlab (Linux):
Esegui lo script, l'istruzione o la funzione MATLAB in modo non interattivo.MATLAB:
- Si avvia senza il desktop
- Non visualizza la schermata iniziale
- Esegue istruzione
- Disabilita le modifiche alle preferenze
- Disabilita la memorizzazione nella cache della casella degli strumenti
- Registra il testo in
stdout
estderr
- Non visualizza le finestre di dialogo
- Esce automaticamente con codice di uscita 0 se script viene eseguito con successo. Altrimenti, MATLAB termina con un codice di uscita diverso da zero.
dichiarazione è il codice MATLAB racchiuso tra virgolette doppie. If istruzione è il nome di una funzione o di uno script MATLAB, non specificare l'estensione del file. Qualsiasi file richiesto deve trovarsi nel percorso di ricerca MATLAB o nella cartella di avvio.
Usa
-batch
opzione negli script non interattivi o nei flussi di riga di comando. Non utilizzare questa opzione con-r
opzione.Per verificare se una sessione di MATLAB è in esecuzione in modalità batch, chiama
batchStartupOptionUsed
funzione.Esempio:
-batch "myscript"
Ho creato uno script di shell di base chiamato runm
e inserisci nel mio percorso:
$ runm mymatlab.m
Sceneggiatura:
# simple script to run matlab script
if [ $# -eq 0 ]
then
echo "please pass m script"
fi
matlab -nodisplay -nosplash -nodesktop -r "run('$1');"