Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/10/2010, à 13: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, à 13: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, à 15: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, à 15:00)


-- Lucid Lynx --

Hors ligne

#4 Le 11/10/2010, à 18: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, à 18: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, à 19: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, à 19: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 smile

Dernière modification par ehmicky (Le 11/10/2010, à 20: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, à 23:09

jymere

Re : progammarion bash

thanks !

@+


Il est malpoli d'etre aigri

debian 7.5 - 64 bits - gnome

Hors ligne