Bonjour, On 2013-01-17 14:07:30 +0100, Daniel Caillibaud wrote:
Une question bête sur laquelle je sèche : comment mettre des doubles quotes dans une variable bash qui va servir comme option d'une autre commande ?
Un exemple simple pour illustrer
bash OPT="--format=\"commas\"" echo $OPT --format="commas"
Voilà, comme cela. Mais le problème, c'est qu'en général...
ls $OPT # ls: invalid argument `"commas"' for `--format'
Il ne faut *pas* de quotes: --format=commas Car le but des quotes est d'être interprétés par le shell, pas à être passés dans l'argument. En particulier, les quotes servent à "protéger" les espaces, pour qu'ils soient considérés comme faisant partie de l'argument et non pas séparer deux arguments. Je pense que ton problème est maintenant: comment différencier les espaces séparant les options des espaces faisant partie d'une valeur d'une option. Soit c'est prévu par l'utilitaire qui va lire la variable d'environnement (voir au cas par cas), soit si tu passes toi-même la variable dans un script, il faut un système pour la réévaluer par le shell (dans ce cas, les quotes sont utiles): c'est le but de l'utilitaire eval.
pas mieux avec OPT="--format=\\"commas\\"" ou OPT="--format='commas'" ou cmd="ls $OPT" $cmd $($cmd) `$cmd`
eval ls $OPT -- Vincent Lefèvre <vincent@vinc17.net> - Web: <http://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)