2
基於此link,我試圖解決類似的問題。xmlstarlet根據條件選擇值
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>iwidget</artifactId>
<packaging>jar</packaging>
<version>0.9.1b</version>
<name>iwidget</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
我想提取groupId
如果artifactId
等於iwidget
。
我迄今爲止嘗試:
xmlstarlet sel -N x=http://maven.apache.org/POM/4.0.0 -t -v "/x:project/x:groupId" < pom.xml
以上返回的groupId = foo.bar
,不過,我希望它返回只有artifactId
等於iwidget
$VAR='foo.bar'
xmlstarlet sel -N x=http://maven.apache.org/POM/4.0.0 -t -m "//x:project[artifactId="$VAR"]" -v "//x:project/groupId" < pom.xml
我在想什麼?
這不適用於上面提供的pom。我可以使用shell變量$ var而不是'iwidget'嗎?但是,即使沒有變量,它也不起作用。 – askb
我在你的文章中更新了XML,使其格式良好。你能用上面那個* exact * XML來試試上面的命令嗎?我測試它在這裏,它的工作(docker Ubuntu 16.04上的xmlstarlet).. – har07
我在尋找的是使用shell變量($ VAR)「iwidget」。當我直接傳遞字符串時,這是有效的,而我通過$ VAR返回什麼都沒有。 – askb