[KSH] problème de substitution de variable

problème de substitution de variable [KSH] - Shell/Batch - Programmation

Marsh Posté le 21-03-2003 à 16:02:38    

Bonjour,  
 
J'ai un problème sur un script shell (ksh) :  
 
pourquoi les lignes :  
 
file_name_pattern=@(nimporte|quoi)*.sh
ls -l $file_name_pattern  
 
ne sort aucun résultat, enfin plus exactement la commande ls dit qu'il n'y aucun fichier correspondant, alors qu'ils existent, d'ailleurs si je fais directement :  
 
ls -l @(nimporte|quoi)*.sh  
 
j'ai bien les résultats voulu...j'imagine que le problème vient de l'interprétation du '@', si le pattern est uniquement *.sh, ca passe...bref je comprends pas, si quelqu'un pouvait m'aider.
 
Merci


Message édité par KSauzeRK le 21-03-2003 à 16:03:20
Reply

Marsh Posté le 21-03-2003 à 16:02:38   

Reply

Marsh Posté le 24-03-2003 à 09:00:39    

:??:

Reply

Marsh Posté le 25-03-2003 à 17:01:56    

A quoi correspond ton @(nimporte|quoi) stp ?
Si c'est une expression reguliere, normal que ca marche pas : la commande ls ne sait pas faire d'interpolation... :heink:


Message édité par Muchacho le 25-03-2003 à 17:03:50
Reply

Marsh Posté le 26-03-2003 à 09:14:36    

Nan, c'est pas du regexp, c'est de la susbstitution gérée par le shell qui fait le pattern matching sur les noms de fichiers.  
 
D'ailleurs, quand je fais directement ls @(nimporte|quoi)*.sh, ca fonctionne, c'est le fait de l'affecter à une variable qui pose problème.
 
Sinon pour info, @(nimporte|quoi), ca correspond à "nimporte" ou "quoi"...enfin en ksh en tout cas.

Reply

Marsh Posté le 28-03-2003 à 13:09:21    

KSauzeRK a écrit :

Bonjour,  
 
J'ai un problème sur un script shell (ksh) :  
 
pourquoi les lignes :  
 
file_name_pattern=@(nimporte|quoi)*.sh
ls -l $file_name_pattern  
 
ne sort aucun résultat, enfin plus exactement la commande ls dit qu'il n'y aucun fichier correspondant, alors qu'ils existent, d'ailleurs si je fais directement :  
 
ls -l @(nimporte|quoi)*.sh  
 
j'ai bien les résultats voulu...j'imagine que le problème vient de l'interprétation du '@', si le pattern est uniquement *.sh, ca passe...bref je comprends pas, si quelqu'un pouvait m'aider.
 
Merci

je suis sous ksh et si tu fait
ls -l *sh
ca suffit
 
ou ls -l toto*sh
 
toto1.sh
toto2.log
totottt4568.log
etc....
 
ca marcheras
 


---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 28-03-2003 à 13:36:32    

vimaster a écrit :

je suis sous ksh et si tu fait
ls -l *sh
ca suffit
 
ou ls -l toto*sh
 
toto1.sh
toto2.log
totottt4568.log
etc....
 
ca marcheras


 
euh...je t'avoue que je comprends pas trop là. Il me semble que le '*' correspond à 0 ou n caractères quelconques. Je vois pas trop comment ls -l tot*sh peut sortir toto2.log, j'ai testé ici, ca ne fonctionne pas comme un 'ou'.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed