これは、Anipalの問題ではなく、基本的なシェルの問題です。そのコマンドラインもansibleせずにエラーが発生します。
$ echo cat \/\/*[local-name()='project']\/*[local-name()='version'] | xmllint --shell pom.xml | sed '\/^\/ >/d' | sed 's/<[^>]*.//g'
bash: syntax error near unexpected token `('
cat
コマンドの引数には不十分で引用され、あなたが実際に問題を引き起こすで不要とよいですスラッシュ(/
)をエスケープするように見えています。これを試してみてください:>
折りたたまれたスカラー演算子を使用して
- hosts: localhost
tasks:
- shell: >
echo cat '//*[local-name()="project"]/*[local-name()="version"]' |
xmllint --shell pom.xml |
sed '\/^\/ >/d' |
sed 's/<[^>]*.//g'
register: artifactId
- debug:
var: artifactId.stdout_lines
は、あなたが引用のレベルを避けることができ、それが管理するコマンドが容易になります。また、読みやすいように書式設定することもできます。で
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<version>4.0.0</version>
</project>
上記脚本結果:次の入力を考えると
これは動作しますが
TASK [command] *****************************************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"artifactId.stdout_lines": [
"4.0.0"
]
}
は、あなたの代わりにansibleのXPathモジュールのいくつかの並べ替えを使用して検討する必要があります。 This oneは最近活動しているようですが、自分で試したことはありません。
エラーは何ですか? –