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. 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+
    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
      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 /]$
        ;-))
        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
          1. Je n'ai pas été clair...pardon

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

            T'aurais un exemple précis à nous proposer s'il te plaît, merci ;-))