Sono stato google per un po 'di tempo e tutti sembrano avere una soluzione diversa, nessuna delle quali sembra funzionare per me.Esecuzione di shell-script con parametri da java
Ho provato sia ProcessBuilder
e Runtime
. Entrambi chiamano direttamente il file .sh
e lo inviano a /bin/bash
. Senza fortuna
Torna alle origini, il mio codice corrente è il seguente;
String cmd[] = { "~/path/to/shellscript.sh", "foo", "bar" };
Process p = Runtime.getRuntime().exec(cmd);
che sta dando un errore di No such file or directory
, nonostante che in esecuzione manualmente;
~/path/to/shellscript.sh foo bar
Funziona perfettamente da bash.
Ho bisogno di mantenere il ~
perché questo script esiste in forme leggermente diverse per tre diversi utenti.
Ah, è il '' ~ probabilità di essere la causa dei problemi ne pensi? Java non sa come passare un simile percorso alla chiamata di sistema? – lynks
Sì, molto probabilmente ~ è la ragione. È possibile avere il suggerimento di cui sopra se per utente lo script si trova nello stesso percorso relativo nella directory home o se il percorso è configurato per utente, come suggerito. –
Il secondo suggerimento ha funzionato perfettamente, grazie. Non ho nemmeno pensato di controllare '~' – lynks