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

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [shell script] boucle for qui ne marche pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell script] boucle for qui ne marche pas

n°1250585
xilebo
noone
Posté le 22-11-2005 à 11:18:26  profilanswer
 

Salut,
 
 
je suis en train d ecrire un shell script sous linux qui permet en gros de creer des repertoire en fonction du nom de chaque fichier contenu dans un repertoire.
 
Le probleme, c'est que le nom de ces fichiers peut contenir des espaces.
 
Ainsi, quand je fais la chose suivante :
 

Code :
  1. for fichier in `/bin/ls -1 $chemin*$name*`
  2. do
  3.      echo $fichier
  4. done


 
il me liste bien les fichiers un par un si le fichier ne contient pas d'espace, mais s'il y a un ou plusieurs espaces, il boucle en fait à chaque fois qu'il rencontre un espace.
 
Exemple de résultat :
 


mv "/mnt/020_BE/Software/FMR/rsn/RP40215.doc" "/mnt/020_BE/Software/FMR/rsn/P40215-C"
mv "/mnt/020_BE/Software/FMR/rsn/P80050" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "-" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "A" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "-" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "BOUTON" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "FINGER" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "4-2" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "GRAVE.dwg" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "/mnt/020_BE/Software/FMR/rsn/RP80050.doc" "/mnt/020_BE/Software/FMR/rsn/P80050 - A - BOUTON FINGER 4-2 GRAVE"
mv "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "CLAVIER" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "IBE" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "1402" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "GRAVE" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "LASER.dwg" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "/mnt/020_BE/Software/FMR/rsn/RP80053.doc" "/mnt/020_BE/Software/FMR/rsn/P80053-B_BOUTON CLAVIER IBE 1402 GRAVE LASER"
mv "/mnt/020_BE/Software/FMR/rsn/P80348-1&2-A_gravure" "/mnt/020_BE/Software/FMR/rsn/P80348-1&2-A_gravure bouton laser"
mv "bouton" "/mnt/020_BE/Software/FMR/rsn/P80348-1&2-A_gravure bouton laser"
mv "laser.dwg" "/mnt/020_BE/Software/FMR/rsn/P80348-1&2-A_gravure bouton laser"
mv "/mnt/020_BE/Software/FMR/rsn/RP80348-1&2.doc" "/mnt/020_BE/Software/FMR/rsn/P80348-1&2-A_gravure bouton laser"
 


 
Y a-t-il possibilité de définir une règle différente pour la boucle for, afin qu'il ne considère pas les espaces comme séparateur ?
 
 
merci d'avance :)
 
 
(désolé si ca vous parait évident, je débute en shell script).

mood
Publicité
Posté le 22-11-2005 à 11:18:26  profilanswer
 

n°1250590
black_lord
Truth speaks from peacefulness
Posté le 22-11-2005 à 11:24:52  profilanswer
 

modifie l'IFS :  

Code :
  1. IFS=$'\t\n'


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1250594
xilebo
noone
Posté le 22-11-2005 à 11:26:59  profilanswer
 

:jap:  
 
 
ca fonctionne parfaitement.
 
 
Mais dois-je restaurer l'original après ? et si oui, comment ?
 
 
Merci en tout cas.

n°1251038
matafan
Posté le 22-11-2005 à 20:50:32  profilanswer
 

Une autre solution (mais c'est dur à dire vu que tu ne nous dit pas exactement ce que tu dois faire dans la boucle), c'est de ne pas utiliser ls et de boucler directement sur * :

for i in *; do echo "$i"; done


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

  [shell script] boucle for qui ne marche pas

 

Sujets relatifs
mettre des lettres à la suite dans un label avec un boucle...http://page_en_php.php?input=recherche => comment ça marche ?
[Résolu] Session : marche pô :(boucle pour fonction mail()
Arrêt d'un script dans boucle ifScript windows
Détacher un processus Java du Shell[Shell] Diff de fichiers INI
[vba] Comment appliquer Droitereg en boucle ? 
Plus de sujets relatifs à : [shell script] boucle for qui ne marche pas


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