2012-09-19 3 views
0

Je voudrais exécuter un script shell (.sh) à partir d'une classe Java.manière efficace d'exécuter le script dans Java

Quel est le moyen le plus efficace et le plus rapide pour y parvenir?

Est-il préférable d'exécuter ce script directement depuis Java, en utilisant groovy ou y a-t-il un autre moyen?

+4

A propos de quel type de script dont nous parlons? Veuillez être plus précis sur ce que vous essayez d'accomplir. –

+0

Parlez-vous d'un script shell? Dans ce cas, utilisez Runtime.exec() 'ou utilisez' ProcessBuilder' –

+0

@PeterLawrey J'ai supposé qu'il voulait exécuter un script JS à partir de Java, mais peut-être que vous avez raison ... difficile à dire. – berry120

Répondre

1

utiliser simplement un constructeur de processus pour créer et exécuter votre script:

ProcessBuilder processBuilder = new ProcessBuilder("script.sh", "arg1", "arg2"); //Add more arguments as needed 
processBuilder.directory(new File("scriptDir")); //Set the working directory, if needed 
Process process = processBuilder.start(); 

Vous pouvez aussi simplement tirer un appel à Runtime.exec():

Process process = Runtime.getRuntime().exec("script.sh"); 

Personnellement je partirais avec la première approche - il vous permet de définir des arguments, répertoire de travail, variables d'environnement, etc. d'une manière beaucoup plus propre et plus facile qu'avec un simple appel exec().

+1

Il a édité la question pour indiquer clairement qu'il pose une question sur un script shell, pas de script en général. –

+0

@StephenC Merci, ont mis à jour pour le refléter. – berry120

+0

Il est très important pour moi de trouver la solution la plus efficace. Donc, si mon script.sh doit faire des changements dans un fichier.txt énorme quelle approche prendra moins de temps? Qu'en est-il de l'approche grooby? – pbal

Questions connexes