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