Je stocke les arguments dans une commande d'une variable. La dernière commande que je veux est:Citation non respectée dans une variable bash
mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm
Voilà ma tentative:
set -x # for debugging
RESULTDIR=results
MOCK_CONFIG="myconfig"
MOCK_ARGS="-r $MOCK_CONFIG --define \"debug_package %{nil}\" --resultdir $RESULTDIR"
cmd="mock $MOCK_ARGS --rebuild mypackage.src.rpm"
$cmd
Les résultats sont les suivants:
+ RESULTDIR=results
+ MOCK_CONFIG=myconfig
+ MOCK_ARGS='-r myconfig --define "debug_package %{nil}" --resultdir results'
+ cmd='mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm'
+ mock -r myconfig --define '"debug_package' '%{nil}"' --resultdir results --rebuild mypackage.src.rpm
ERROR: Bad option for '--define' ("debug_package). Use --define 'macro expr'
Comme vous pouvez le voir, les arguments au paramètre --define
ne sont pas être cité correctement. --define
pense que je le passe seulement debug_package
, ce qui est incomplet.
J'ai essayé diverses variations dans les guillemets lors de la définition MOCK_ARGS
, essayant même d'échapper à l'espace entre debug_package
et %{nil}
.
Quelle combinaison de guillemets et/ou d'échappements me permet de construire cette liste d'arguments et d'exécuter la commande à partir de ce script?
EDIT:
La raison pour laquelle je suis le stockage de la commande qui en résulte dans une variable est parce qu'il finit par être passé dans une fonction qui fait un peu de journalisation, exécute alors la commande.
En outre, j'ai rencontré this FAQ qui suggère que je devrais utiliser des tableaux au lieu d'une variable. J'ai commencé à expérimenter avec des tableaux mais jusqu'à présent, je n'ai pas de solution de travail.
Cela ressemble à un doublon de http://stackoverflow.com/questions/954390/echo-notation-quotation-marks-in-tcsh –
La réponse à http://stackoverflow.com/questions/954390/echo- nested-quotation-marks-in-tcsh ne fonctionne pas pour moi. –
duplication possible de [Comment exécuter une commande bash stockée sous forme de chaîne avec guillemets et astérisque] (http://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a -string-with-quotes-and-astterisk) –