1

我正在尝试将一个包含 XML 的变量传递给 sed。

我想从这个 XML 中提取其中包含的部分<image_viewer> </image_viewer>;和<image_thumb_url> </image_thumb_url>

每个标签之间都有一个 HTML 链接,没有空格;并且每个标签+链接都在一行上。

看来我做错了,我对bash很陌生...

base64 -w0 "$1" > "$1".64.jpg

apiXml=$(curl -v -F "upload=<$1.64.jpg" -F key="$apiKey" -F format=xml "$apiUrl")

imgView=$(echo "$apiXml" | sed 's/<image_viewer>\(.*\)<\/image_viewer>/\1/')
imgThumb=$(echo "$apiXml" | sed 's/<image_thumb_url>\(.*\)<\/image_thumb_url>/\1/')

imgLink="[url=$imgView][img]$imgThumb[/img][/url]"

echo "$imgLink"

欢迎任何建议,谢谢!

4

1 回答 1

2

在这里使用正确的工具来完成工作会更容易。

read imgView < <(xmlstarlet sel -t -m '//image_viewer' -v . -n <<<"$apiXml")
read imgThumb < <(xmlstarlet sel -t -m '//image_thumb_url' -v . -n <<<"$apiXml")

任何 XPath 引擎都可以—— XMLStarlet 只是众多引擎之一。

于 2013-10-02T17:49:20.520 回答