Comment échapper à la barre oblique inverse et double quote dans Ansible (module de script)
Je suis très nouveau pour Ansible (2.x) et je vais avoir de la difficulté à utiliser le module de script et passage de paramètres avec des guillemets doubles et les barres obliques inverses.
En supposant que nous avons un ensemble de variables {{foo}}
qui contient une chaîne de caractères "toto", j'ai une tâche comme ceci:
set_fact:
arg: \(-name "{{foo}}" \)
name: call shell module
script: path/somescript.sh "{{arg}}"
Mon script besoins de la structure de l'argument pour le travail:
\(-name "foo" \)
J'ai essayé plusieurs choses comme:
arg: \(-name \""{{foo}}"\" \) result: \\(-name \"foo\" \\)
arg: '\(-name \""{{foo}}"\" \)' result: \\(-name \"foo\" \\)
arg: \\(-name \""{{foo}}"\" \\) result: \\(-name \"foo\" \\)
Est-il possible de barres obliques inverses, et les guillemets dans Ansible?
Vous devez vous connecter pour publier un commentaire.
Ne soyez pas confus par le fait que ansible-playbook imprime les messages de débogage dans JSON forme codée, de sorte que certains personnages sont échappés.
Vous avez la bonne syntaxe. Ceci permettra de définir
arg
à\(-name "bar" \)
sifoo
's la valeur estbar
.Mais le message de débogage dans ce cas ressemblera à ceci:
Noter que les caractères spéciaux pour JSON (
"
et\
) sont échappés.Mais il peut y avoir quelques problèmes avec la passant comme paramètre.
Si vous appeler le script, à l'instar de ce
Paramètres de la chaîne va ressembler cette
"\(-name "bar" \)"
qui est en fait 3 chaînes concaténées dans bash:\(-name
+bar
+\)
, de sorte que vous perdrez des guillemets autour de l' bar.Si vous voulez conserver ces guillemets, utilisation:
Vous êtes très proche. Je pense que vous voulez définir une variable, pas un fait, et je vous suggère d'utiliser le
shell
module à la place de lascript
module.shell
est plus indulgent quand il s'agit de s'échapper et de citer complexe des commandes shell.Et la sortie: