2014-01-05 5 views
1

Так что я хочу, чтобы выполнить ш скрипт из Javaвыполнения Exec ш не делает ничего

Код:

String command = "/__data/1.sh"; 
    ProcessBuilder pb = new ProcessBuilder("/bin/bash", "-c", command); 
    Process p = null; 
    try { 
     p = pb.start(); 
    } catch (IOException e) { 
     System.out.println("Could not execute script"); 
    } 
    BufferedReader reader = new BufferedReader(new InputStreamReader(
      p.getInputStream())); 

    try { 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      System.out.println(command + " says: " + line); 
     } 
    } catch (IOException e) { 
     System.out.println("Error reading response"); 
    } 

1.sh:

echo Hello 
mkdir QWE 
echo Hello2 

Что я получил:

/__data/1.sh says: Hello 
/__data/1.sh says: Hello2 

Mkdir не действует

1.sh chmodded to 777

В чем проблема?

UPD: О, моя вина, забыли линию, теперь отредактированную. Но главный вопрос в том, почему другие команды не работают. Да, как mkdir. Когда я звоню/bin/bash -c /__data/1.sh с консоли, он отлично работает

UPD: О, кажется, mkdir не работает должным образом, потому что я не установил полный путь. Сожалею. Решено

+0

Что происходит, когда вы запускаете '/ bin/bash -c/__ data/1.sh'? –

ответ

2

Вам не хватает + line в конце println. Это должно по крайней мере избавиться от некоторой путаницы. Не знаю, почему mkdir не работает.

Смежные вопросы