Analyse/passage d'arguments de ligne de commande à un script bash - quelle est la différence entre “$@” et “$*”?

Je suis à l'aide d'un script bash pour appeler et exécuter un .jar fichier à partir de n'importe quel endroit sans avoir à constamment entrez son chemin explicite.

La .jar nécessite l'ajout de la variable de paramètres à spécifier lors de l'exécution, et que ceux-ci peuvent être n'importe quoi, ils ne peuvent pas être codés en dur dans le script.

Il y a 3 variables au total, la première spécifie 1 de 2 actions que l' .jar est pour faire de, la seconde spécifie un fichier cible à adopter cette action et de la troisième spécifie le nom d'un fichier que l'action consiste à créer.

Le script que j'utilise actuellement est:

#!/bin/bash  
java -jar "C:\path\to\file.jar" "$1" "$2" "$3"

Je sais très peu de choses sur scripts bash, mais lors de la recherche pour une autre réponse à mes malheurs (maintenant corrigé) je suis tombé sur "$@" et "$*" lors de la citation d'arguments de ligne de commande. Faire plus de recherche m'a amené sur ce site: Comment Wiki: Comment lire les arguments de ligne de commande dans un script bash, mais je ne trouve pas de solides informations sur ces arguments, sans avoir à parcourir des tonnes de advanced bash de programmation qui est bien au-dessus de ma tête.

Alors, maintenant que j'ai divaguait à jamais, ma question est relativement simple:

Puis-je remplacer "$1" "$2" "$3" avec "$@" ou "$*", et si oui, lequel est le meilleur à utiliser?

Aussi que, le cas échéant, de la différence entre ces commandes?

double possible de Quelle est la différence entre "$@" et "$*" en bash?
Mes excuses - j'ai déjà fait la recherche sur google la différence et qui n'a pas de jeter tout StackOverflow pages - j'ai oublié de chercher StackOverflow. - désolé.
double possible de Quelle est la différence entre $@ et $* dans les scripts shell?

OriginalL'auteur Escribblings | 2013-05-20