Script shell - affecter * sans interprétation

[Résolu/Fermé]
Signaler
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
-
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
-
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+

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
Salut,

T'aurais un exemple précis à nous proposer s'il te plaît, merci ;-))
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
1
Je n'ai pas été clair...pardon

var="*"
echo $var (je voudrais qu'il m'affiche *)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
[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 ;-))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 560 >
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 886
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 /]$
;-))
Messages postés
56
Date d'inscription
dimanche 4 mars 2007
Statut
Contributeur
Dernière intervention
9 juin 2008
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
Messages postés
44
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
24 mai 2008
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+