wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -n -v "link" -n -n
这行代码会打印出我订阅的RSS源中每个条目的标题(-v“title”)和URL(-v“link”)。
我想把标题和URL分别存储到不同的变量(例如$title和$url),以便稍后可以在curl中使用它们。
wget ${RSS_URL} -O - 2>/dev/null | xmlstarlet sel -t -m "/rss/channel/item" -v "title" -n -v "link" -n -n
这行代码会打印出我订阅的RSS源中每个条目的标题(-v“title”)和URL(-v“link”)。
我想把标题和URL分别存储到不同的变量(例如$title和$url),以便稍后可以在curl中使用它们。
xmlstarlet
两次,一次获取每个需要的信息。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