[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,

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
  2. 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
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut,

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