Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1446 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [bash]Comment utiliser les for((i=0;critere;i++))

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[bash]Comment utiliser les for((i=0;critere;i++))

n°808342
weed
Posté le 28-07-2004 à 10:14:13  profilanswer
 

voila je bloque sur une boucle for à la C
 
 

Code :
  1. $file=`ls`; #pour simplifier la comprehension 
  2.   for ((i=0 ; "`echo "$file" | grep -x $newfile`"=="$newfile" ; i++))
  3.           do
  4.                   newfile="`echo $1 | cut -d "." -f1`$i.`echo $1 | cut -d "." -f2`";
  5.                   echo "i=$i newfile=$newfile";
  6.   done


 
explication :
echo "$file" => liste les fichiers par ligne
`echo "$file" | grep -x $newfile` => renvoie le fichier recherché. Si le fichier ne s'y trouve ca renvoie ""  
 
 
on tape le nom du script avec comme 1er parametre le nom d'un fichier. Si le fichier n'existe pas dans le repertoire, $newfile prendra le nom de ce fichier à savoir $1 (j'ai fais un test avec un if pour ca). Mais si ce n'est pas le cas, on va alors essayer de trouver un nom de fichier qui n'existe pas encore et c'est le role de la boucle for. Pour generer un nouveau nom on insere un nombre juste avant le point de l'extenstion...
 
 
Exemple :  
on 4 fichiers dans le repertoires ($file):
test.png
test1.png
test2.png  
test3.png
 
et bien le fichier prendra comme nom :  
echo $newfile => test4.png

mood
Publicité
Posté le 28-07-2004 à 10:14:13  profilanswer
 

n°808384
bobuse
Posté le 28-07-2004 à 10:40:26  profilanswer
 

weed a écrit :


[fixed]
 $file=`ls`; #pour simplifier la comprehension  
  for ((i=0 ; "`echo "$file" | grep -x $newfile`"=="$newfile" ; i++))  
          do  
                  newfile="`echo $1 | cut -d "." -f1`$i.`echo $1 | cut -d "." -f2`";  
                  echo "i=$i newfile=$newfile";  
  done
[/cpp]


 
1ere chose : for n'accepte que des expressions arithmetique, donc ta comparaison de chaine le met dedans
 
2eme chose : ta bibouille pour voir si le fichier existe est un peu tordu ;) voit plutôt cet extrai du man de test :

Citation :

-e FILE
 FILE exists

n°808399
weed
Posté le 28-07-2004 à 10:50:06  profilanswer
 

bobuse a écrit :

1ere chose : for n'accepte que des expressions arithmetique, donc ta comparaison de chaine le met dedans


 
 
je i pas le droit de faire uniquement des tests avec des nombres et non pas avec des chaines de caracteres ?  
c'est bien ca ...
 
bon pas grave je vais faire un grep -c pour compter le nombre de correspondance et tester si ca vaut 1 ou 0
 
 

bobuse a écrit :


2eme chose : ta bibouille pour voir si le fichier existe est un peu tordu ;) voit plutôt cet extrai du man de test :

Citation :

-e FILE
 FILE exists



en fait c'est une liste de fichier recuperer sur un ftp avec ncftpls, donc je ne pense pas que ta solution soit bonne


Message édité par weed le 28-07-2004 à 10:51:41
n°808405
bobuse
Posté le 28-07-2004 à 10:52:53  profilanswer
 

weed a écrit :


 
en fait c'est une liste de fichier recuperer sur un ftp avec ncftpls, donc je ne pense pas que ta solution soit bonne


 
arf, ok !
L'info me manquait ;)

n°808406
weed
Posté le 28-07-2004 à 10:53:29  profilanswer
 

et yoooooooooooooooooooooooo man tu es trop bobuse ;)
tu es trop fort, je viens de faire un  
 

Code :
  1. for ((i=0 ; "`echo $file | grep -xc $newfile`"==1 ; i++))
  2.         do
  3.                 echo "i=$i avant";
  4.                 newfile="`echo $1 | cut -d "." -f1`$i`echo $1 | cut -d "." -f2`";
  5.                 echo "i=$i newfile=$newfile";
  6.         done


 
et ca fonctionne  
thxxxxxxxxx bobuse

n°808439
bobuse
Posté le 28-07-2004 à 11:24:41  profilanswer
 

you're welcome :D

n°810599
matafan
Posté le 30-07-2004 à 00:00:35  profilanswer
 

grep -xq + test de la valeur de retour c'est mieux que grep -xc + comparaison de la sortie.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [bash]Comment utiliser les for((i=0;critere;i++))

 

Sujets relatifs
utiliser LIKE avec un champ numérique[PHP] utiliser PGP avec PHP4
[ Bash ] TableauComment inclure une dll pour utiliser ses fonctions ?
Utiliser le compilo de Visual C++ Toolkit avec Dev-C++ ? (pbm MinGW)[Java]Utiliser des ressources d'un jar à partir d'un autre jar
Dev-C++ Ajouter la libraire *.lib au projet ? (Et utiliser compilo MS)[BASH] partitionnement en ligne de commande
[BASH] SED et expression régulière[Flash]utiliser des combobox et des radiobutton
Plus de sujets relatifs à : [bash]Comment utiliser les for((i=0;critere;i++))


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR