簡體   English   中英

在bash中,如何轉義“ {}”?

[英]In bash, how to escape “{}”?

我想在bash中解析XML,而xpath可以做到這一點。

(要獲得帶有子元素“ em:minVersion = 2.1”的“ Description”元素),這樣的查詢效果很好:

xpath install.rdf /RDF/Description/em:targetApplication/Description[em:minVersion=2.1]

但這不起作用:

xpath install.rdf /RDF/Description/em:targetApplication/Description[em:id={ec8030f7-c20a-464f-9b0e-13a3a9e97384}]

像這樣的輸出:

Query:
/RDF/Description/em:targetApplication/Description[em:id={{ec8030...
.......................................................^^^
Invalid query somewhere around here (I think)

我認為是因為大括號“ {}”需要轉義,所以我嘗試了“ {{..}}”,“ {...}” ...它們都不起作用。

我一點都不熟悉xpath或perl ...

嘗試

xpath install.rdf '/RDF/Description/em:targetApplication/Description[em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"]'

實際上,這與Perl沒有任何關系,只是在其中編寫了xpath實用程序。 全部與bashXPath有關

為了防止bash看到它,請將整個查詢放在單引號中。

在XPath中,字符串必須用雙引號引起來(用單引號或雙引號引起來)。 通常最簡單的方法是在XPath表達式中使用雙引號,然后在bash周圍加上單引號。

由於您正在尋找

<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>

你想要的條件是

em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"

您將擺脫em:minVersion=2.1因為2.1看起來像一個數字,因此XPath進行了數字比較。 但這不適用於任意字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM