[SHELL] caractère escape pour quotes

gringo -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

dans un script j'utilise la commande suivante :

eval "echo \"$(cat /path/to/foo)\"" > /path/to/bar

pour exporter le contenu d'un fichier qui contient des variables, problème, dans ce fichier il y a des chaines de caractères entre double quotes.

mais les doubles quotes ne sont pas prises en compte, elle n'apparaissent pas dans le fichier de sortie et c'est problématique.

j'ai essayé de mettre des \ devant les " dans foo, ou de doubler les " mais ça ne marche pas.

comment pourrais-je faire?

Merci,



A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
ça fonctionne avec \"
$ cat a3
a = $a
b = $b
c = \"$a $b\"
$ 
$ a=aa
$ b=bb
$ eval "echo \"$(cat a3)\""
a = aa
b = bb
c = "aa bb"
$ 
0
gringo
 
merci de ta réponse, je dois mal m'y prendre ça ne fonctionne pas comme je voudrais.

ex:une ligne de foo

push "route $iplan $netmask"

ensuite
eval "echo \"$(cat /path/to/foo)\"" > /path/to/bar

dans bar j'obtiens :

push route 192.168.0.0 255.255.255.0

pas de double quotes, j'ai essayé
push \"route $iplan $netmask\" dans bar mais ça ne fonctionne pas.

je m'y prends peut etre mal, sans doute même :)
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
ce sont bien des guillemets ?
$ cat a4
push \"route $iplan $netmask\" 
push \"route2 $iplan $netmask\" 
$ 
$ iplan=xxx
$ netmask=255.255.255.0
$ 
$ eval "echo \"$(cat a4)\""|tee a44
push "route xxx 255.255.255.0" 
push "route2 xxx 255.255.255.0" 
$ 
$ cat a44
push "route xxx 255.255.255.0" 
push "route2 xxx 255.255.255.0" 
$ 
$ 
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Tes doubles quotes sont échappées dans ton fichier texte, lui non ;-(
0