Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

shift - Accéder à de nombreux arguments

Mais que se passe-t-il quand on donne au programme un grand nombre d'arguments comme celui-ci :


image

[moi@linuxbox ~]$ pos-param *


Nombre d'arguments : 82

$0 = /home/moi/bin/posit-param

$1 = adresses.ldif

$2 = bac

$3 = signets.html

4 $ = debian-500-i386-netinst.iso

5 $ = debian-500-i386-netinst.jigdo

6 $ = debian-500-i386-netinst.template

$7 = debian-cd_info.tar.gz


8 $ = ordinateur de bureau

$9 = répertoire-bin.txt

8 $ = ordinateur de bureau

$9 = répertoire-bin.txt


Sur cet exemple de système, le caractère générique * se développe en 82 arguments. Comment pouvons-nous en traiter autant ? Le shell fournit une méthode, bien que maladroite, pour ce faire. Les décalage La commande fait « descendre d'un » tous les paramètres à chaque exécution. En effet, en utilisant décalage, il est possible de se débrouiller avec un seul paramètre (en plus de $0, qui ne change jamais):



#! / Bin / bash


# posit-param2 : script pour afficher tous les arguments count=1

while [[ $# -gt 0 ]] ; faire

echo "Argument $count = $1" count=$((count + 1))

décalage fait

#! / Bin / bash


# posit-param2 : script pour afficher tous les arguments count=1

while [[ $# -gt 0 ]] ; faire

echo "Argument $count = $1" count=$((count + 1))

décalage fait


Chaque fois décalage est exécuté, la valeur de $2 est déplacé vers $1, la valeur de $3 est déplacé vers $2 etc. La valeur de $# est également réduit de un.

Dans le pos-param2 programme, nous créons une boucle qui évalue le nombre d'arguments restants et continue tant qu'il y en a au moins un. On affiche l'argument courant, on incrémente la variable compter à chaque itération de la boucle pour fournir un compte courant du nombre d'arguments traités et, enfin, exécuter un décalage charger

$1 avec l'argument suivant. Voici le programme au travail :


[moi@linuxbox ~]$ posit-param2 abcd

Argument 1 = a Argument 2 = b Argument 3 = c Argument 4 = d

[moi@linuxbox ~]$ posit-param2 abcd

Argument 1 = a Argument 2 = b Argument 3 = c Argument 4 = d


Meilleur système d'exploitation Cloud Computing chez OnWorks :