xmlstarlet -v to $variable


wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -n -v "link" -n -n

该行打印出我拥有的 rss 提要中条目的标题(-v "标题")和 url(-v "链接")。我想将标题和 url 存储到单独的变量(例如 $title 和 $url)中,以便以后可以使用它们进行 curl。

我该怎么做?

运行

xmlstarlet两次,针对要获取的每个信息运行一次。

为了提高效率,您应该将 URL 下载到本地文件(因此只需一次wget),然后在该文件上运行xmlstarlet

title=$(xmlstarlet sel -t -m "/rss/channel/item" -v "title" local.xml)
link=$(xmlstarlet sel -t -m "/rss/channel/item" -v "link" local.xml)

我建议这种方法,因为它可以很好地处理元素中的空格甚至新行。

注意:要优化该过程,您可以首先过滤XML输入以生成仅包含所需信息的新XML文件,然后再次运行xmlstarlet以将其拆分为变量。

或者你可以使用 Bash 的内置"read"来一次分配多个变量:

$ read title link <(wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -o " " -v "link")
$ echo $title
$ echo $link

相关内容

  • 没有找到相关文章

最新更新