2011-01-06 18 views
11

Tôi đang cố gắng chạy các tập lệnh MATLAB từ dòng lệnh và đang gặp sự cố khi nhận MATLAB để trả về kết quả cho stdout.Cách gọi MATLAB từ dòng lệnh và in tới stdout trước khi thoát

Khi chạy lệnh sau, MATLAB in biểu ngữ giấy phép và thoát mà không in thông báo.

matlab -nodisplay -nojvm -r "fprintf(1, 'value: %f\n', 2.0); quit;"

* lưu ý: Tôi hiện đang chạy phiên bản 7.10.0.499 (R2010a) 64-bit (maci64)

+1

thể trùng lặp của [Làm thế nào tôi có thể ngăn chặn MATLAB từ trở về cho đến khi sau một script dòng lệnh hoàn thành?] (http://stackoverflow.com/questions/14495/how-can-i-stop-matlab-from-returning-until-after-a-command-line-script-completes) – gnovice

+0

vấn đề với 'Làm thế nào tôi có thể ngăn chặn Matlab trở về cho đến sau khi một kịch bản dòng lệnh hoàn thành?' liên quan đến cách Windows mở cửa sổ lệnh riêng biệt để thực hiện các lệnh mà không chặn thiết bị đầu cuối. Ngoài ra, việc sử dụng tùy chọn dòng lệnh -wait là giải pháp cho vấn đề đó không tồn tại trên các hệ thống không phải của Windows. – papahabla

Trả lời

7

Như đã trình bày trong related post này, bạn có thể sử dụng tùy chọn -logfile để tạo một bản sao của tất cả các kết quả đầu ra cho một tệp.

matlab -nodisplay -nojvm -logfile out.txt -r "fprintf(1, 'value: %f\n', 2.0); quit;" 

On Windows, sử dụng -wait tùy chọn dòng lệnh để ngăn chặn việc thực hiện các kịch bản của bạn cho đến khi MATLAB đóng.

On Unix, bạn có thể sử dụng sleep 5s ngủ trong vòng 5 giây, hoặc sử dụng các lệnh wait tạm dừng thực hiện cho đến khi quá trình này kết thúc:

#!/bin/sh 
matlab -nodisplay -logfile out.txt -r "rand(3), quit" 
wait $(ps | grep matlab | awk '{print $2}') && cat out.txt 
Các vấn đề liên quan