Script shell - affecter * sans interprétation

Résolu
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. Modérateur
    Salut,

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

      var="*"
      echo $var (je voudrais qu'il m'affiche *)
      0
      1. Modérateur
        [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
      2. Modérateur
        @jipicySalut,

        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
    2. 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
      1. Modérateur
        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
        1. Contributeur
          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
          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