Problème entre argument + fonction + variable + espace
Problème entre argument + fonction + variable + espace - Shell/Batch - Programmation
MarshPosté 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 :
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 :
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+