Problème entre argument + fonction + variable + espace

Problème entre argument + fonction + variable + espace - Shell/Batch - Programmation

Marsh Posté le 24-05-2007 à 15:02:38    

Bonjour à tous
 
J'ai une variable (opt dans le cod ci-dessous) qui contient "argument 1" et "argument2".
Ainsi, la commande "echo $opt" donne la chaine "argument 1 argument2". On notera que le 1er argument est coupé en 2
Quand je passe cette variable à une commande, la commande me coupe la chaine en 3 morceau au lieu de 2
J'ai essaye de protéger mon premier argument avec \" mais rien n'y fait.
Ci dessous, le code :
 
############################
#!/bin/sh
 
fonction()
{
    echo "1er param : "$1
    echo "2ieme param : "$2
    echo "3ieme param : "$3
}
 
opt="\"argument 1\" argument2"
fonction $opt
echo "A la main :"
fonction "argument 1" argument2
############################
 
On obtient la trace :
1er param : "argument
2ieme param : 1"
3ieme param : argument2
 
A la main :
1er param : argument 1
2ieme param : argument2
3ieme param :  
 
############################
 
En fait mon problème est de savoir comment faire interpréter le caractère " dans le 1er cas quand je passe l'argument par une variable.
 
Merci beaucoup de votre aide
A+

Reply

Marsh Posté le 24-05-2007 à 15:02:38   

Reply

Marsh Posté le 24-05-2007 à 18:34:59    

saucisson a écrit :

Bonjour à tous
 
J'ai une variable (opt dans le cod ci-dessous) qui contient "argument 1" et "argument2".
Ainsi, la commande "echo $opt" donne la chaine "argument 1 argument2". On notera que le 1er argument est coupé en 2
Quand je passe cette variable à une commande, la commande me coupe la chaine en 3 morceau au lieu de 2
J'ai essaye de protéger mon premier argument avec \" mais rien n'y fait.
Ci dessous, le code :
 
############################
#!/bin/sh
 
fonction()
{
    echo "1er param : "$1
    echo "2ieme param : "$2
    echo "3ieme param : "$3
}
 
opt="\"argument 1\" argument2"
eval fonction $opt
echo "A la main :"
fonction "argument 1" argument2
############################
 
On obtient la trace :
1er param : "argument
2ieme param : 1"
3ieme param : argument2
 
A la main :
1er param : argument 1
2ieme param : argument2
3ieme param :  
 
############################
 
En fait mon problème est de savoir comment faire interpréter le caractère " dans le 1er cas quand je passe l'argument par une variable.
 
Merci beaucoup de votre aide
A+


 
 
 
regarde, j ai ajouté eval a ton code

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed