wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -n -v "link" -n -n
该行打印出rss feed中条目的标题(-v“标题)和url(-v”link“)。 我想将标题和网址存储到单独的变量中(例如$ title和$ url),以便稍后我可以将它们用于curl。
我该怎么做?
答案 0 :(得分: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
将其拆分为变量。
答案 1 :(得分:1)
或者你可以使用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