Tableaux en shell
Résolu
Alucard95
Messages postés
157
Date d'inscription
Statut
Membre
Dernière intervention
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour tout le monde!!
Alors voila, je voudrais stocker le résultat d'une commande dans un tableau le tout en langage shell.
Par exemple le résultat de la commande ls va donc me ressortir plusieurs noms et je voudrais que chacun de ces noms soient affecté à une valeur du tableau :
nom_fichier1 dans tableau[1]
nom_fichier2 dans tableau[2]
...
Le problème est que je ne sais pas comment écrire cela, que doit-je mettre entre les crochets??
tableau[?]=$(ls)
Merci d'avance
Alors voila, je voudrais stocker le résultat d'une commande dans un tableau le tout en langage shell.
Par exemple le résultat de la commande ls va donc me ressortir plusieurs noms et je voudrais que chacun de ces noms soient affecté à une valeur du tableau :
nom_fichier1 dans tableau[1]
nom_fichier2 dans tableau[2]
...
Le problème est que je ne sais pas comment écrire cela, que doit-je mettre entre les crochets??
tableau[?]=$(ls)
Merci d'avance
A voir également:
- Tableau shell
- Tableau word - Guide
- Classic shell - Télécharger - Personnalisation
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Tableau croisé dynamique - Guide
17 réponses
Salut,
jp@MDK:~/tmpfs ssh$ touch fich{1,2,3,4,5}.txt jp@MDK:~/tmpfs ssh$ ls fich1.txt fich2.txt fich3.txt fich4.txt fich5.txt jp@MDK:~/tmpfs ssh$ tableau=( $(ls) ) jp@MDK:~/tmpfs ssh$ echo ${tableau[0]} fich1.txt jp@MDK:~/tmpfs ssh$ echo ${tableau[2]} fich3.txt jp@MDK:~/tmpfs ssh$ echo ${tableau[@]} fich1.txt fich2.txt fich3.txt fich4.txt fich5.txt jp@MDK:~/tmpfs ssh$;-))
Lorsque je fais :
$ echo ${tableau[0]}
j'obtiens :
Bad substitution
par contre si je fais :
$ echo $tableau[0]
j'obtiens :
fich1.txt fich2.txt fich3.txt fich4.txt fich5.txt
faut-il faire quelque chose au préalable pour que mon tableau se remplisse convenablement??
$ echo ${tableau[0]}
j'obtiens :
Bad substitution
par contre si je fais :
$ echo $tableau[0]
j'obtiens :
fich1.txt fich2.txt fich3.txt fich4.txt fich5.txt
faut-il faire quelque chose au préalable pour que mon tableau se remplisse convenablement??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Comment as-tu déclaré ton tableau ?
Comme dans mon exemple ?
Attention il faut un espace de part et d'autre des parenthèses dans :
Comme dans mon exemple ?
Attention il faut un espace de part et d'autre des parenthèses dans :
tableau=( $(ls) )
pour tableau=( $(ls) )
Au debut je les avais bien mises mais ça me fait cette erreur :
Syntax error: "(" unexpected
Donc par la suite j'ai utilisé cette syntaxe :
tableau=$(ls)
mais je pense que c'est la raison de l'erreur Bad substitution
Au debut je les avais bien mises mais ça me fait cette erreur :
Syntax error: "(" unexpected
Donc par la suite j'ai utilisé cette syntaxe :
tableau=$(ls)
mais je pense que c'est la raison de l'erreur Bad substitution
J'ai bien mis les guillemets mais j'ai toujours l'erreur bad substitution à la ligne
echo ${tableau[0]}
pareil si je l'écrit
echo "${tableau[0]} "
ou comme ça
echo "(${tableau[0]} )"
echo ${tableau[0]}
pareil si je l'écrit
echo "${tableau[0]} "
ou comme ça
echo "(${tableau[0]} )"
Essaie de reproduire ça :
jp@MDK:~/tmpfs ssh$ tableau=( A B C D E ) jp@MDK:~/tmpfs ssh$ echo ${tableau[@]} A B C D E jp@MDK:~/tmpfs ssh$ echo ${tableau[*]} A B C D E jp@MDK:~/tmpfs ssh$ echo ${tableau[0]} A jp@MDK:~/tmpfs ssh$ echo ${tableau[1]} B jp@MDK:~/tmpfs ssh$ echo ${tableau[4]} E jp@MDK:~/tmpfs ssh$
Il y a un truc que je pige pas, si je le fais directement dans mon terminal cela fonctionne bien.
Par contre si je le fais en exécutant mon script : sh mon_script.sh j'ai une erreur.
Par contre si je le fais en exécutant mon script : sh mon_script.sh j'ai une erreur.
Bah le truc c'est que j'ai fait des copier coller de mon script dans le terminal mais le voila :
#! /bin/sh
tableau=( A B C D E )
echo ${tableau[1]}
#! /bin/sh
tableau=( A B C D E )
echo ${tableau[1]}
Affiche un copier/coller du lancement de ton script et de l'erreur générée...
PS. Chez moi ça passe bien ;-\
PS. Chez moi ça passe bien ;-\
# sh mon_script.sh
mon_script.sh: 3: Syntax error: "(" unexpected
Si j'écris tableau=( A B C D E )
sh mon_script.sh
mon_script.sh: 5: Bad substitution
si je met tableau="( A B C D E )"
toujours avec
echo ${tableau[1]}
mon_script.sh: 3: Syntax error: "(" unexpected
Si j'écris tableau=( A B C D E )
sh mon_script.sh
mon_script.sh: 5: Bad substitution
si je met tableau="( A B C D E )"
toujours avec
echo ${tableau[1]}
Oublie définitivement cette forme :
tableau="( A B C D E )"
c'est une grosse c*nnerie que j'ai dite :-((
Par contre je ne m'explique pas l'autre erreur :-\
Je n'ai pas trop le temps là, je regarderai ça de plus près ce soir...
tableau="( A B C D E )"
c'est une grosse c*nnerie que j'ai dite :-((
Par contre je ne m'explique pas l'autre erreur :-\
Je n'ai pas trop le temps là, je regarderai ça de plus près ce soir...