3
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 ) 所以我以后可以用它们来卷曲。

我怎样才能做到这一点?

4

2 回答 2

2

运行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再次运行该文件以将其拆分为变量。

于 2013-11-12T09:02:45.157 回答
1

或者您可以使用 Bash 的内置“读取”功能一次分配多个变量:

$ 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
于 2015-04-09T19:32:54.353 回答