Pages : 1
#1 Le 11/10/2010, à 12:30
- jymere
progammarion bash
Bonsoir,
j'ai besion d'écrire un script, j'ai lu en diagonale certains tutos (faute de prendre son temps à lire un cours) mais j'en ai vraiment besoin.
D'abord dans une boucle 'for', comment indiquer que mon indice se ballade dans un intervalle genre :'pour I allant de 1 à 100 faire ...'
Ensuite, je veux afficher le contenu d'un fichier dont le nom est un nombre, je fais une boucle for telle que:
for I in 1 2 3 4 5 6 7 8 9
do
less $I*
done
le problème c'est que lorsque j'execute mon programme le '*' n'est pas interprété comme un "wildcard" (n'importe quelle chaînr e caractère).
comment faire pour qu'il soit interprété ainsi ?
merci
Il est malpoli d'etre aigri
debian 7.5 - 64 bits - gnome
Hors ligne
#2 Le 11/10/2010, à 12:37
- Compte anonymisé
Re : progammarion bash
Bonjour,
Tu n'as pas besoin de mettre une *, le $I est le nombre qui va varier.
Donc un less $I devrait suffire si le fichier s'appelle 1 ou 2 ou 4, etc... et non 1-monfichier par exemple, sinon là en effet il te faut quelque chose de plus poussé.
#3 Le 11/10/2010, à 14:00
- Totor
Re : progammarion bash
for i in {1..100}
do
...
done
# ou
for ((i=1;i<=100;i++))
do
...
done
Dernière modification par Totor (Le 11/10/2010, à 14:00)
-- Lucid Lynx --
Hors ligne
#4 Le 11/10/2010, à 17:54
- jymere
Re : progammarion bash
benh je vais opter pour la boucle for ... merci (ça marche)
@+
Il est malpoli d'etre aigri
debian 7.5 - 64 bits - gnome
Hors ligne
#5 Le 11/10/2010, à 17:56
- jymere
Re : progammarion bash
par curiosité, si je veux belle et bien affichier un fichier dont je sais seulement que ce nom est un nombre. comment "matcher" I aavec tous les nombres genre avec ma première idée avec les wildcards, est-ce possible ?
merci
Il est malpoli d'etre aigri
debian 7.5 - 64 bits - gnome
Hors ligne
#6 Le 11/10/2010, à 18:39
- jymere
Re : progammarion bash
en fait j'ai vraiment besion d'utiliser le wildcard '*' car je n'ai pas l'extension du ficher ...
merci
Il est malpoli d'etre aigri
debian 7.5 - 64 bits - gnome
Hors ligne
#7 Le 11/10/2010, à 18:58
- ehmicky
Re : progammarion bash
[[:digit:]] remplace un (et un seul) chiffre. Si tu veux "matcher" un nombre, plusieurs solutions (notamment find) mais tu peux utiliser +([[:digit:]]) après avoir fait un shopt -s extglob pour activer la syntaxe +( )
En gros, par exemple pour afficher le contenu concaténé de tous les fichiers du répertoire courant dont le nom de fichier est un nombre :
shopt -s extglob
cat +([[:digit:]])
Ca ne marche pas avec toutes les commandes. Tu peux aussi faire :
for i in +([[:digit:]]) ; do
less "$i"
done
ou :
find -regextype "posix-extended" -regex ".*/[[:digit:]]+" -exec less \{\} \;
Edit : le globbing (wildcards) est vraiment très simple (si tu n'actives pas extglob, dotglob ou globstar), je t'encourage à regarder, ça s'apprend en 5 minutes. Tu as seulement les wildcards : *, ?, [ ], [^ ], [! ] et les classes POSIX comme [:digit:]. Tu as de la doc ici si tu lis l'anglais.
Edit 2 : si tu cherches des noms de fichiers étant des nombres terminés à coup sûr par des extensions, rajoute ".*" à la fin du motif. Par ailleurs, attention à ne pas flooder, fait plutôt des Edit plutôt que de poster à nouveau
Dernière modification par ehmicky (Le 11/10/2010, à 19:13)
Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?
Hors ligne
#8 Le 12/10/2010, à 22:09
- jymere
Re : progammarion bash
thanks !
@+
Il est malpoli d'etre aigri
debian 7.5 - 64 bits - gnome
Hors ligne
Pages : 1