Bonjour,
je travaille de plus en plus en tcsh sous OSX pour automatiser certaines tâches.
Un problème persiste sans que j'arrive à le régler. Je m'explique : je cherche à traiter des fichiers dont le nom peut contenir plusieurs espaces consécutifs (au moins 2 suffisent à créer le problème).
Prenons un dossier /mon_dossier contenant un seul fichier dont le nom contient 2 espaces comme "fichier test" (les 2 espaces n'apparaissent pas ici mais c'est OK dans la partie CODE qui suit), il suffit de faire le script suivant :
J'ai beau essayer toutes les ruses que je connais pour contourner le probleme (quote, double quote, ...), rien n'y fait. Alors que ça marche très bien en utilisant des variables en mémoire, je suis obligé de passer par un fichier texte dans mon cas et je bute sur ce problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #!/bin/tcsh -f ls /mon_dossier >! ~/liste.txt # pour enregistrer le nom du fichier dans liste.txt cat ~/liste.txt # liste.txt contient bien "fichier test" avec 2 espaces set ma_variable = `cat ~/liste.txt` # pour récupérer le nom du fichier echo $ma_variable # et là les 2 espaces ont été ramenés à 1 espace "fichier test" ! rm -rf ~/liste.txt # pour supprimer liste.txt
Un ami me dit que sous bash (et autres sh), il faut juste changer la variable IFS (Internal Field Separator) qui gère le(s) caractère(s) de séparation d'une liste de valeurs dans une variable. Y a-t-il une équivalence en tcsh ?
Environnement : MacOSX 10.4.7 (Tiger) et tcsh.
Merci d'avance de votre aide.
Partager