2010-01-12 7 views

Répondre

7

En anglais, ligne par ligne:

if the number of arguments is greater than 0 
then 
if the first argument... 
    starts with '-', do nothing 
    else, "exec" the arguments (run the entire set of arguments as a command replacing this process, not as a child process) 
(end of case) 
(end of if) 
1

Ne sachant pas tout script bash je dirais que ce

  • semble pour savoir si le nombre d'arguments est plus grand que 0
  • si c'est le cas, il regarde le premier argument
    • Si elle commence par - il ne fait rien
    • Sinon, il exécute tous les arguments comme une seule ligne de commande
1

La partie case ... esac est une déclaration switch. Si $1 correspond à -* (c'est-à-dire s'il commence par -) le premier cas sera exécuté - et ne fera rien. Sinon (si $1 correspond à *, ce qui en fonction du paramétrage du shell peut exclure les éléments commençant par .) exec $* sera exécuté. Autour de cela, il y a une instruction if qui vérifie que le commutateur n'est exécuté que s'il y a effectivement des paramètres à vérifier (le nombre de paramètres est supérieur à zéro).

0

Il prend le premier argument passé et l'exécute avec les arguments restants IE:

./script.sh ls dir1 dir2 

agiraient comme si vous tapiez

ls dir1 dir2 
0

Si le premier paramètre placé sur la ligne de commande pour ce script est un fichier, pas une option, Essayez ensuite de l'exécuter en tant que fichier exécutable ou script.