J'essaye le script suivant:
toto="/{home,tmp}" ; find $toto
Qui me renvoie:
find: /{home,tmp}: No such file or directory
Pourtant les codes suivants marchent:
find /{home,tmp}
toto="/hom*" ; find $toto
Vous pouvez me dépanner ?
Merci.
toto="/{home,tmp}" ; find $toto
find: /{home,tmp}: No such file or directory
find /{home,tmp}
toto="/hom*" ; find $toto
# peut-être une clownerie, mais....
Posté par Gyro Gearllose . Évalué à 1.
$> $toto="/{home/tmp}" ; find `eval $toto`
Y'a sûrement mieux, mais je n'ai que ça sous la main !
[^] # Re: peut-être une clownerie, mais....
Posté par Gyro Gearllose . Évalué à 2.
Y'a évidement pas de $ devant le toto affecté !
Faudrait plutôt lire donc :
$> toto="/{home,tmp}" ; find `eval $toto`
Par contre, j'ai fait quelques essais, et je ne sais pas quel comportement tu souhaites avoir. Je m'explique :
Dans un répertoire, j'ai créé deux sous répertoire, comme suit :
$ mkdir $HOME/temp/r1 ; mkdir $HOME/temp/r2
Je m'y suis placé :
$ cd $HOME/temp
Et là, j'ai fait des essais :
1)
$ find ./{r1,r2}
./r1
./r2
Par contre, si je fais :
$ toto="./{r1,r2}" ; find `eval $toto`
ca revient au même que si je fais :
$ find
Ca me liste tout le contenu du répertoire $HOME/temp, ce qui n'est peut-être pas le résultat escompté.
En tout cas, lorsque tu fais find ./r{1,2}, c'est le shell qui concatène successivement 1 puis 2 à ./r, il faut donc trouver un moyen pour que ce soit envoyé tel quel par le biais de ton shell, comme ça, peut-être :
$ toto="find ./r{1,2}" ; eval $toto
./r1
./r2
même résultat qu'en 1)
[^] # Re: peut-être une clownerie, mais....
Posté par franck_ca . Évalué à 1.
toto="find ./r{1,2}" ; eval $toto
Ce comportement me semble quand même bizarre.
Merci pour ton aide.
# Ordre des substitutions
Posté par yned . Évalué à 1.
$ ls
a1 a2 c
$ a=*
$ echo a{$a,b}
a1 a2 ab
$ echo "a{$a,b}"
a{*,b}
$ echo a{"$a",b}
a* ab
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.