Script Bash
Résolu/Fermé
Lee-San
Messages postés
195
Date d'inscription
mardi 18 janvier 2011
Statut
Membre
Dernière intervention
25 février 2011
-
23 févr. 2011 à 09:47
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 févr. 2011 à 10:34
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 23 févr. 2011 à 10:34
A voir également:
- Script Bash
- Script vidéo youtube - Guide
- Microsoft activation script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash jeton gratuit - Télécharger - Divers Jeux
- Bash permission non accordée - Forum Shell
1 réponse
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
23 févr. 2011 à 10:06
23 févr. 2011 à 10:06
Salut,
Pour voir les erreurs d'un script, le mieux est de l'exécuter en mode débogage, en rajoutant "set -xv" en début de script.
Si on exécute ton script tel quel, voilà ce qu'on obtient (débogage activé) :
Déjà, incrémenté ta boucle avant même l'affichage du 1er nom, ce n'est pas bon ;-(
Ensuite comme tu le vois, ta variable "$i" sert à la fois pour le compteur de boucle et pour les items du tableau, pas bon ça ;-(
Le plus simple est de passer par une boucle empruntée au langage C :
;-))
Pour voir les erreurs d'un script, le mieux est de l'exécuter en mode débogage, en rajoutant "set -xv" en début de script.
Si on exécute ton script tel quel, voilà ce qu'on obtient (débogage activé) :
$ ./foo.sh a=(Breno Solene Durant) + a=(Breno Solene Durant) i=0 + i=0 for i in $a do i=$i+1 echo ${a[i]} done + for i in '$a' + i=Breno+1 + echo Solene Solene $
Déjà, incrémenté ta boucle avant même l'affichage du 1er nom, ce n'est pas bon ;-(
Ensuite comme tu le vois, ta variable "$i" sert à la fois pour le compteur de boucle et pour les items du tableau, pas bon ça ;-(
Le plus simple est de passer par une boucle empruntée au langage C :
$ cat foo.sh #!/bin/bash #set -xv a=(Breno Solene Durant) for ((i = 0; i < ${#a[*]}; i++)) do echo ${a[i]} done $ ./foo.sh Breno Solene Durant $
;-))
Modifié par Lee-San le 23/02/2011 à 10:16
Mais je comprend pas pourquoi tu initialise i à 0 dans le "for" et qu'ensuite tu l'incrémente avec i++. Sa veut dire qu'a chaque tour de boucle ton i est égal à 1 ?
Et si j'ai bien compris : i < ${#a[*]} veut dire : "tant que i est inférieur à l'ensemble des arguments du tableau a" ?
a et également a quoi sert le cat foo.sh ?^^
23 févr. 2011 à 10:34
Dans un tableau la numérotation démarre à "zéro" (0), le 1er élément étant donc "${a[0]}".
et qu'ensuite tu l'incrémente avec i++. Sa veut dire qu'a chaque tour de boucle ton i est égal à 1 ?
Non à chaque tour mon "$i" est égal à la valeur précédente de $i + 1
i=0
i=0+1 => 1
i=1+1 => 2
i=2+1 => 3 (là on s'arrête vu que la valeur est plus grande...)
Et si j'ai bien compris : i < ${#a[*]} veut dire : "tant que i est inférieur à l'ensemble des arguments du tableau a" ?
Oui.
a et également a quoi sert le cat foo.sh ?^^
La commande "cat" sert à afficher le contenu d'un fichier (texte en général), c'était juste pour te montrer le contenu du script qui s'appelle "foo.sh".
;-))