Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2774 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Paramètres interprétés

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Paramètres interprétés

n°605338
Peanuty
Posté le 15-12-2004 à 15:34:28  profilanswer
 

Hello
 
Dans un script shell unix, comment faire pour récupérer un paramètre avec des jokers sans l'interpréter ? :??:
 
Pour simplifier voici script.sh :
find . -name $1
 
 
En lançant script.sh *.sav
 
je veux avoir ce résultat :
./fich1.sav
./sous_rep/fich2.sav

 
Mais je n'obtiens que :
./fich1.sav
 
Je pense que cela vient du fait que $1 est interprété dans le répertoire courant est remplacé par fich1.sav. Du coup le script fait juste un find . -name fich1.sav  :sweat:

mood
Publicité
Posté le 15-12-2004 à 15:34:28  profilanswer
 

n°605345
Peanuty
Posté le 15-12-2004 à 15:44:16  profilanswer
 

En échappant les caractères spéciaux au niveau de l'appel ça marche :
script.sh \*.sav  
 
mais ce n'est pas satisfaisant comme réponse, vu que c'est l'utilisateur qui doit gérer le problème.  :(

n°605370
Dark_Schne​ider
Close the World, Open the Net
Posté le 15-12-2004 à 16:33:52  profilanswer
 

find . -name "$1"  
 
 
cela marche ?


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
n°605380
Peanuty
Posté le 15-12-2004 à 16:44:04  profilanswer
 

Dark_Schneider a écrit :

find . -name "$1"  
 
 
cela marche ?


 
Non, ça fait pareil.
 
Apparemment il n'y a pas d'autre moyen que de faire le traitement au niveau du passage de paramètres ( soit "*.sav", soit \*.sav ) mais pas à l'intérieur du script.

n°605617
matafan
Posté le 15-12-2004 à 23:44:54  profilanswer
 

Tu n'as pas compris ce qui se passe quand tu fais "script.sh *.sav". Le "*.sav" est interprete par ton shell, qui fait un "filename expansion". Donc il remplace *.sav par la liste de tous les fichiers qui matchent ce pattern, puis il lance script.sh avec en argument cette liste. script.sh ne voit jamais "*.sav".
 
C'est un peu pareil que les gens qui font "ls *". Ca revient a lancer ls avec en argument la liste des fichiers du repertoire courant, ce qui est idiot. Autant faire "echo *".
 
Quand tu fais "script.sh \*.sav", tu echappes les "*". Ca empeche le shell de l'interpreter. Donc dans ce cas il appelle script.sh avec en agument "*.sav". Tu peux aussi faire ./script.sh "*.nav" ou ./script.sh '*.nav'.

n°605621
Peanuty
Posté le 15-12-2004 à 23:49:15  profilanswer
 

matafan a écrit :

Tu n'as pas compris ce qui se passe quand tu fais "script.sh *.sav". Le "*.sav" est interprete par ton shell, qui fait un "filename expansion". Donc il remplace *.sav par la liste de tous les fichiers qui matchent ce pattern, puis il lance script.sh avec en argument cette liste. script.sh ne voit jamais "*.sav".
 
C'est un peu pareil que les gens qui font "ls *". Ca revient a lancer ls avec en argument la liste des fichiers du repertoire courant, ce qui est idiot. Autant faire "echo *".
 
Quand tu fais "script.sh \*.sav", tu echappes les "*". Ca empeche le shell de l'interpreter. Donc dans ce cas il appelle script.sh avec en agument "*.sav". Tu peux aussi faire ./script.sh "*.nav" ou ./script.sh '*.nav'.


 
 :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Paramètres interprétés

 

Sujets relatifs
mandrake 10.1 perte de parametres internet[Gstreamer] Paramètres de conversion
Booter Mandrake 9.2 sur le 2eme disque dur : parametres ?Modifier les parametres de ma Radeon 9600XT ....
[debian woody] comment changer les paramètres reseaux ?[awk] cgi -> sh : probleme de passage de parametres
wifi sur dell8500 > ok mais pas de memo des parametres[IPcop] Modifier les paramètres de boot
passage des parametres wifiDistribution Knoppix => sauvegarder les paramètres sur clé usb
Plus de sujets relatifs à : Paramètres interprétés


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)