Script shell - affecter * sans interprétation

Résolu
jax54000 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
jax54000 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
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+
A voir également:

6 réponses

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

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

var="*"
echo $var (je voudrais qu'il m'affiche *)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
[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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > 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
jax54000 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jpzuate Messages postés 56 Date d'inscription   Statut Contributeur Dernière intervention   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
jax54000 Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   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