web-dev-qa-db-fra.com

Créer un script shell pour exécuter un programme Java sous Linux

J'ai créé un programme Java qui synchronise le contenu de deux répertoires. Le programme prend comme emplacement l'argument des deux répertoires afin de les synchroniser. Les informations de synchronisation sont stockées dans un fichier au format JSON dans chaque répertoire. J'ai une bibliothèque référencée json-simple-1.1.1.jar

J'exécute ceci à partir d'Eclipse sous Windows et tout fonctionne correctement . Je veux créer un script Shell pour pouvoir l'exécuter sur un terminal Linux en tapant sync dir1 dir2sync est mon programme Java et dir1 et dir2 sont les chemins d'accès aux annuaires à synchroniser à partir de l'annuaire actuel.

Je suis très nouveau dans les scripts Shell et Linux et je ne sais pas si cela est facile à faire ou si cela va me prendre toute la journée. 

5
M0rty

créez un fichier nommé "sync" dans/usr/bin contenant les éléments suivants:

Java -jar {PATH TO JARFILE} $1 $2

Remplacez {PATH TO JARFILE} par le chemin d'accès au fichier .jar

Rendre le fichier exécutable en tapant chmod +x sync dans/usr/bin

3
DutChen18

vous pouvez créer un shell avec le nom "run.sh" (notez l'extension .sh indiquant qu'il s'agit d'un script shell) et le copier dans le répertoire/usr/local/bin.

1.Script (run.sh)

#!/bin/sh

arg1=$1
arg2=$2

##directory where jar file is located    
dir=/directory-path/to/jar-file/

##jar file name
jar_name=json-simple-1.1.1.jar

## Permform some validation on input arguments, one example below
if [ -z "$1" ] || [ -z "$2" ]; then
        echo "Missing arguments, exiting.."
        echo "Usage : $0 arg1 arg2"
        exit 1
fi

Java -jar $dir/$jar_name arg1 arg2
  1. copier le script dans/usr/local/bin

    cp run.sh/usr/local/bin

  2. Donner l'autorisation d'exécution au script

    chmod u + x /usr/local/bin/test.sh

  3. maintenant, vous pouvez taper simplement Word run ou run.sh en ligne de commande: Shell complétera automatiquement le nom du script et pourra également être exécuté en appuyant sur la touche Entrée.

2
spectre007