[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: gestion des variables sous zsh
- To: "" <>
- Subject: Re: gestion des variables sous zsh
- From: Richard Prescott <>
- Date: 18 Aug 2003 08:52:34 -0400
-
In-reply-to: <[email protected]>
Pour une raison que j'ignore le * n'a pas pris effet. De toute facon *
n'est jamais tres bon a utiliser dans un script sauf dans certains cas
simples. Je vous propose la solution suivante :
/usr/bin/find '/etc/init.d/Sauvegardes/test ps/' \
-name 'pascal*' \
-exec /bin/cp {} '/etc/init.d/Sauvegardes/test/' \;
On donne alors la job d'interpretation du glob * a find. Les problemes
de quoting ne sont plus puisque $1 (ou si vous preferez argv[1]) de cp
va etre le nom du fichier avec son path et ses espaces. Vous n'aurez
donc pas a vous preocuper de la double interpretation du shell.
Bonne chance.
On Fri, 2003-08-15 at 20:37, Pascal Schneider wrote:
> Bonjour,
>
> j'essaie de copier des fichiers d'un répertoire à un autre via batch zsh. Mon répertoire source contient un espace dans le nom
>
> j'ai creer pour les besoins du test un repertoire 'test' et un repertoire 'test ps' et des fichiers pascal_1, pascal_2, etc...
>
> si je fait au prompt
>
> cp /etc/init.d/Sauvegardes/'test ps'/pascal* /etc/init.d/Sauvegardes/test
>
> le résultat est bon et un ls test donne :
>
> pascal_1 pascal_2 pascal_3 pascal_4 pascal_5
>
> maintenant sous batch en mettant le chemins et fichiers en variable
>
> #!/bin/sh
>
> Fichier_1="/etc/init.d/Sauvegardes/'test ps'/pascal*"
> Fichier_2="/etc/init.d/Sauvegardes/test"
>
> echo "Fichier 1 :$Fichier_1"
> echo "Fichier 2 :$Fichier_2"
> echo "cp $Fichier_1 $Fichier_2"
> cp "$Fichier_1" $Fichier_2
>
> ### Fin du batch
>
> en le lancant, voici le resultat
>
> Fichier 1 :/etc/init.d/Sauvegardes/test ps/pascal*
> Fichier 2 :/etc/init.d/Sauvegardes/test
> cp /etc/init.d/Sauvegardes/test ps/pascal* /etc/init.d/Sauvegardes/test
> cp: Ne peut évaluer `/etc/init.d/Sauvegardes/test ps/pascal*' par stat(): Aucun fichier ou répertoire de ce type
> zsh: exit 1 ./test2.sh
>
> quelqu'un aurait il une idée pour passer en variable des chemin et nom de fichiers comprenant des espaces???
>
> merci pour vos réponses
>
> Pascal
>