Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/10/2006, 11h39   #1
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 14
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 14
Points : 10
Points : 10
Par défaut Comment gérer un double espace en tcsh ?

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 :
Code :
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
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.

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.
mikool19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 11h47   #2
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 14
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 14
Points : 10
Points : 10
J'ai reformulé mon message pour plus de clarté.

Y a personne qui bosse en tcsh ?
mikool19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2006, 18h09   #3
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 14
Détails du profil
Informations personnelles :
Âge : 44

Informations forums :
Inscription : octobre 2006
Messages : 14
Points : 10
Points : 10
On m'a donné la solution que je reproduis ici au cas où ça intéresse quelqu'un.

C'était tout con mais c'est souvent comme ça

Code :
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
et bien il ne manquait pas grand chose :
Code :
1
2
3
4
5
6
#!/bin/tcsh -f
ls /mon_dossier >! ~/liste.txt
cat ~/liste.txt
set ma_variable = "`cat ~/liste.txt`"         # notez les double quotes
echo "$ma_variable"                           # et là aussi et maintenant les 2 espaces sont bien là !
rm -rf ~/liste.txt
mikool19 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h35.


 
 
 
 
Partenaires

Hébergement Web