Récupérer le quoting des arguments

Daniel Caillibaud ml at lairdutemps.org
Mon Dec 7 15:32:32 CET 2015


Le 07/12/15 à 14:56, Marc Chantreux <khatar at phear.org> a écrit :

MC> On Mon, Dec 07, 2015 at 12:28:38PM +0100, Daniel Caillibaud wrote:
MC> > Bonjour,
MC> > 
MC> > Et avec zsh c'est possible ? 
MC> 
MC> dans zsh tu peux "surquoter" pour obtenir ca
MC> 
MC> for e ( this is a test )
MC>     print ${(qq)e}
MC> 
MC> 'this'
MC> 'is'
MC> 'a'
MC> 'test'
MC> 
MC> dans man ksh, je trouve
MC> 
MC>      ${name at Q} 

Sauf que je ne veux pas en ajouter partout, juste récupérer la ligne d'arguments telle qu'elle
a été transmise.


MC> en fait ca serait cool que tu expliques ce que tu veux faire

Ben, justement, c'était dans mon post :

DC> c'est pour que mon script du post précédent fonctionne
DC> avec un appel comme
DC>   benice_rsync … --rsh='/usr/bin/ssh -i /path/to/id_rsa' …
DC> pour lancer en arrière plan
DC>   rsync … --rsh='/usr/bin/ssh -i /path/to/id_rsa' …

Mais je ne veux pas quoter tous les arguments, juste récupérer les quotes telles qu'elles
étaient dans la ligne de commande initiale, car si je récupère bien un seul
argument (sans les quotes)
  --rsh=/usr/bin/ssh -i /path/to/id_rsa
le passer à rsync avec 
  rsync "--rsh=/usr/bin/ssh -i /path/to/id_rsa"
ne va pas donner l'effet escompté

J'ai des solutions de contournement, par ex via .ssh/config, ou en ajoutant des quotes après
le = et à la fin si j'ai un égal et une espace dans mon argument, mais ça fait bricolage, je
voulais savoir si y'avait moyen de récupérer la ligne de commande intégralement et sans
altération du quoting.

-- 
Daniel

Un pigeon, c'est plus con qu'un dauphin, d'accord... mais ça vole. 
Michel Audiard


More information about the Shell mailing list