2010-06-17 31 views
25

Tôi muốn phát hành lệnh hệ thống gốc từ chương trình Scala và có thể bẫy đầu ra. ("ls" đến với tâm trí. Có thể có các cách khác để lấy thông tin thư mục mà không đưa ra lệnh, nhưng đó là bên cạnh điểm của câu hỏi của tôi.) Nó sẽ tương ứng với os.system (...) trong Python.Phát lệnh hệ thống gốc trong Scala

Tôi đã xem "Lập trình bằng Scala". Tôi đã xem "Lập trình Scala" của O'Reilly. Tôi đã Googled một số kết hợp các thuật ngữ. Chưa có may mắn. Ai đó có thể đưa cho tôi một ví dụ hay chỉ cho tôi một tài nguyên nơi tôi có thể tìm thấy một ví dụ?

+0

Bạn không nên gắn cờ câu trả lời đúng. Đó sẽ là một điều tốt đẹp để làm và nó mang lại cho mọi người thấy câu hỏi của bạn trong tương lai một sự khích lệ thêm để trả lời. :) –

+0

Xong. Cảm ơn lời nhắc. – Tony

Trả lời

28

Cách tốt nhất để làm điều đó là sử dụng scala.sys.process.

+1

Nhận xét của người dùng ẩn danh: Kiểm tra cũng cho 'scala.sys.process.Process'. – Anne

+0

@Anne Cảm ơn, tôi đã cập nhật câu trả lời để trỏ tới ScalaDoc. Gói đó * là * Thư viện quy trình, đã tìm thấy đường vào thư viện chuẩn. –

1

Scala không khác với Java trong khu vực này, vì bạn có thể gọi bất kỳ chức năng Java API nào bằng các tính năng tương tác của Scala. Xem ví dụ: java.lang.ProcessBuilder.

0

Scala có khả năng tương tác hoàn toàn với Java. Vì vậy, bạn có thể gọi các lệnh hệ thống từ Scala như bạn làm từ Java. Xem this để xem cách gọi các lệnh hệ thống từ Java.

+0

Xem các câu trả lời khác, thư viện của Scala làm cho mọi việc trở nên thuận tiện hơn nhiều. – Langley

4
import scala.sys.process._ 

val vimLocation: String = "whereis vim" !! 

reference

+0

liên kết tham chiếu bị hỏng –

0

Bạn có thể làm điều đó bằng sys.process dễ dàng:

Thực thi lệnh hệ thống và nhận được mã trạng thái của họ (exit code):

import sys.process._ 

val result = "your_command" ! 
println("result = "+result) // result contain zero for success or non zero for fail 

Bắt đầu ra từ lệnh hệ thống:

import sys.process._ 

val result = "your_command" !! 
println("result = "+result) // result contain output from the command 

Bạn có một số tùy chọn khác (đường ống, Chuyển hướng STDOUT, Nối tới STDOUT và ...), bạn có thể xem this link.

Các vấn đề liên quan