Bash : protéger une quote simple, possible ?

Résolu
Bonjour,
Encore une fois je sollicite votre aide...

Peut-on protéger une simple quote en bash ?
exemple (qui ne fonctionne pas) echo 'aa $$ \' bb '
(Résultat attendu : aa $$ ' bb)

Dans un script je voudrais passer une variable texte en paramètre à une commande sur un serveur distant par ssh
mais entre les guillemets à protéger, les backquotes et les dollars je m'en sors plus
d'où l'idée de ssh serv "commande '$argument' "
Mais il me faut protéger les " ' " qui peuvent se trouver dans $argument

Je vous remercie d'avance

4 réponses

  1. hello
    $ echo 'aa $$ '\'' bb ' 
    aa $$ ' bb 
    $  
    
    3
    1. Merci
      la difficulté est de remplacer tous les ' par '\''
      ${variable//\'/\'\\\'\'} ne marche pas car le 2eme motif est bizarrement interprété

      J'ai pu contourner avec q="'"; ${variable//\'/$q\\$q$q}
      Merci bien en tout cas :)
      0
  2. salut,

    echo "aa \$$ ' bb " 
    aa $$ ' bb
    ;)
    0
    1. et aussi
      $ echo "aa "'$$'" ' bb "
      aa $$ ' bb 
      $ 
      0
      1. Je voulais justement éviter les " ", et mettre tout en ' , d'où ma question sur le moyen de les protéger

        avec " ", je dois surprotéger les backquotes, $ et " à chaque niveau de ssh, c'est exponentiel (ssh s1 "ssh s2 \"ssh s3 \\\" ssh s4 \\\\\\\" ssh s5 \\\\\\\\\\\\\\\" echo \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"bonjour cela fait 5\\\\\\\\\\\\\...$....
        0
    2. il y a aussi
      $ printf 'aa $$ \x27 bb\n' 
      aa $$ ' bb  
      $ printf 'aa $$ \x5c bb\n' 
      aa $$ \ bb  
      $ 
      0
      1. remplacer toutes les quotes pas \x27 oui
        Mais ça ne marche qu'avec printf
        Je passe ma chaine de caractères à d'autres scripts/programmes en argument, je ne cherchais pas juste à l'afficher
        Mais dans ce contexte là oui ce serait une solution!
        0
      2. sinon mettre tout dans un fichier à exécuter pour éviter trop d'échappements imbriqués
        0
      3. Mais le contenu est dynamique et fonction du serveur qui exécute le script ;)

        Mais j'ai maintenant la solution avec les ' c'est propre
        0