Tôi đã googling một thời gian, và tất cả mọi người dường như có một giải pháp khác nhau, không ai trong số đó xuất hiện để được làm việc cho tôi.Thực thi shell-script với các tham số từ java
Tôi đã thử cả hai ProcessBuilder
và Runtime
. Cả hai đều gọi trực tiếp số .sh
và cho vào /bin/bash
. Không có may mắn.
Quay lại vấn đề cơ bản, mã hiện tại của tôi như sau;
String cmd[] = { "~/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
Lỗi này gây ra lỗi No such file or directory
, mặc dù chạy theo cách thủ công;
~/path/to/shellscript.sh foo bar
Hoạt động hoàn hảo từ bash.
Tôi cần giữ ~
vì shellscript này tồn tại ở các dạng hơi khác nhau cho ba người dùng khác nhau.
Ah, là '~ 'có thể sẽ gây ra những vấn đề làm bạn nghĩ? Có java không biết làm thế nào để vượt qua một con đường như vậy để gọi hệ thống? – lynks
Có, rất có thể ~ là lý do. Bạn có thể có gợi ý ở trên nếu mỗi người dùng tập lệnh có cùng đường dẫn tương đối trong thư mục chính hoặc có đường dẫn được định cấu hình cho mỗi người dùng, như tôi đã đề xuất. –
Đề xuất thứ hai hoạt động hoàn hảo, cảm ơn. Tôi thậm chí không nghĩ đến việc kiểm tra '~' – lynks