Script shell - affecter * sans interprétation

Résolu
jax54000 Messages postés 44 Statut Membre -  
jax54000 Messages postés 44 Statut Membre -
Bonjour à tous,

Je cherche à mettre le caractere * dans une variable (sans qu'il n'y ait aucune interprétation).

Dans mon cas :
- Si je travaille sous "home", le caractère est bien affecté tel quel à la variable.
- Si je travaille sous un autre répertoire, le caractère est interprété avant l'affectation. La variable ne contient donc pas *.

Problème de débutant......

Merci.

A+
Configuration: Windows XP
Internet Explorer 6.0
Cygwin

6 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    T'aurais un exemple précis à nous proposer s'il te plaît, merci ;-))
    0
  2. jax54000 Messages postés 44 Statut Membre 1
     
    Je n'ai pas été clair...pardon

    var="*"
    echo $var (je voudrais qu'il m'affiche *)
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      [jp@MDK tmpfs]$ var="*"
      
      [jp@MDK tmpfs]$ echo $var
      *
      
      [jp@MDK tmpfs]$ echo "$var"
      *
      
      [jp@MDK tmpfs]$ echo '$var'
      $var
      
      [jp@MDK tmpfs]$ tree
      .
      `-- data
          |-- rep1
          |   |-- repA
          |   |   |-- fich1
          |   |   |-- fich2
          |   |   `-- fich3
          |   |-- repB
          |   |   |-- fich1
          |   |   |-- fich2
          |   |   `-- fich3
          |   |-- repC
          |   |   |-- fich1
          |   |   |-- fich2
          |   |   `-- fich3
          |   `-- repD
          |       |-- fich1
          |       |-- fich2
          |       `-- fich3
          `-- rep2
              |-- repA
              |   |-- fich1
              |   |-- fich2
              |   `-- fich3
              |-- repB
              |   |-- fich1
              |   |-- fich2
              |   `-- fich3
              |-- repC
              |   |-- fich1
              |   |-- fich2
              |   `-- fich3
              `-- repD
                  |-- fich1
                  |-- fich2
                  `-- fich3
      
      11 directories, 24 files
      
      [jp@MDK tmpfs]$ ls -R $var
      data:
      rep1/  rep2/
      
      data/rep1:
      repA/  repB/  repC/  repD/
      
      data/rep1/repA:
      fich1  fich2  fich3
      
      data/rep1/repB:
      fich1  fich2  fich3
      
      data/rep1/repC:
      fich1  fich2  fich3
      
      data/rep1/repD:
      fich1  fich2  fich3
      
      data/rep2:
      repA/  repB/  repC/  repD/
      
      data/rep2/repA:
      fich1  fich2  fich3
      
      data/rep2/repB:
      fich1  fich2  fich3
      
      data/rep2/repC:
      fich1  fich2  fich3
      
      data/rep2/repD:
      fich1  fich2  fich3
      [jp@MDK tmpfs]$ sh -xvc "ls $var"
      
      ls *
      + ls data
      rep1  rep2
      [jp@MDK tmpfs]$
      Ça marche ;-))
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Salut,

        peut être chez toi ça marche :-)) mais chez moi non
        lami20j@debian:~/bin/my_perl_script/Classe$ var="*"
        lami20j@debian:~/bin/my_perl_script/Classe$ echo $var
        FichierScalar.pm Personne.pm PersOverTie.pm
        lami20j@debian:~/bin/my_perl_script/Classe$ ls $var
        FichierScalar.pm  Personne.pm  PersOverTie.pm
        lami20j@debian:~/bin/my_perl_script/Classe$ ls *
        FichierScalar.pm  Personne.pm  PersOverTie.pm
        
        --
        lami20j
        0
  3. jax54000 Messages postés 44 Statut Membre 1
     
    var="*"

    echo $var

    fonctionne que si on est sous "home/..."

    si l'on est ailleurs, il interprète * et me liste donc tous les fichiers et tous les répertoires dans la variable

    Merci
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Problème de "quotes" !!!
    [jp@MDK ~]$ cd ..
    [jp@MDK home]$
    [jp@MDK home]$ pwd
    /home
    [jp@MDK home]$ echo $var
    jp
    [jp@MDK home]$ echo "$var"
    *
    [jp@MDK home]$ cd /
    [jp@MDK /]$ echo $var
    bin boot dev etc home initrd lib mnt opt proc root sbin sys tmp usr var
    [jp@MDK /]$ echo "$var"
    *
    [jp@MDK /]$
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jpzuate Messages postés 56 Statut Contributeur 51
     
    Salut,

    Selon les OS, les versions, le shell, que sais-je encore, l'étoile peut être interprêtée différemment.

    Il faut tenter soit d'annuler son effet par un \, soit l'encapsuler dans des ' ou des ".

    Selon l'environnement, "*" n'aura pas le meme effet que '*', ou que \*.
    Jean-Pierre Zuate
    0
  7. jax54000 Messages postés 44 Statut Membre 1
     
    Vous êtes LES grands chefs ! LES grands patrons !

    Effectivement c'est un problème de quotes.
    J'ai bien aussi noté que l'environnement influera beaucoup sur l'interprétation.

    Merci pour tout

    A+
    0