我使用的是下面的curl命令。
curl -u $username:$password --silent "https://mail.google.com/mail/feed/atom" | \tr -d '\n'
得到一个像这样的样本输出:
<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
<title>Gmail - Inbox for [email protected]</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>13</fullcount>
<entry>
<title>Backup Status</title>
<summary>Backup Successful </summary>
<link rel="alternate" href="https://mail.google.com/[email protected]&message_id=1715ed8b619b4e4b&view=conv&extsrc=atom" type="text/html"/>
<modified>2020-04-07T19:53:47Z</modified>
<issued>2020-04-07T19:53:47Z</issued>
<id>tag:gmail.google.com,2004:1663333312794531403</id>
<author>
<name>Carbonite</name>
<email>[email protected]</email>
</author>
</entry>
<entry>
<title>Backup Status Report</title>
<summary>Dear IDrive User, Ref : UserName....</summary>
<link rel="alternate" href="https://mail.google.com/[email protected]&message_id=1715ed8b619b4e4b&view=conv&extsrc=atom" type="text/html"/>
<modified>2020-04-07T19:53:47Z</modified>
<issued>2020-04-07T19:53:47Z</issued>
<id>tag:gmail.google.com,2004:1663333312794531403</id>
<author>
<name>no-reply</name>
<email>[email protected]</email>
</author>
</entry>
<entry>
<title>Notification</title>
<summary>Notification Status</summary>
<link rel="alternate" href="https://mail.google.com/[email protected]&message_id=1715ed8b619b4e4b&view=conv&extsrc=atom" type="text/html"/>
<modified>2020-04-07T19:53:47Z</modified>
<issued>2020-04-07T19:53:47Z</issued>
<id>tag:gmail.google.com,2004:1663333312794531403</id>
<author>
<name>Software Notification</name>
<email>[email protected]</email>
</author>
</entry>
<entry>
............etc
</entry>
我想提取所有的值 <entry\title>
\tr -d '\n' To get a sample output like this: <entry\summary>
Try something like the following:<entry\author\name>
First, to use xmlstarlet to assign values to variables, use these:
In your sample xml, there are 3 values (from 3 emails) assigned to each variable. To access those in, for example,
use:<title>
Output:<summary>
,<name>
并在bash脚本中把它们设置为变量。
我如何将这些值设置为变量?
我想从xml中提取值,并将它们发送到变量中,比如说
到$title ,
到$summary和
到$name。$summary = 电子邮件正文
$name = from name
title=$(xmlstarlet sel -t -v "//entry/title" input.xml)
name= $(xmlstarlet sel -t -v "//entry/author/name" input.xml)
summary = $(xmlstarlet sel -t -v "//entry/summary" input.xml)
$title
for val in "${title[@]}";
do
printf "$val\n"
done
我正在使用下面的curl命令:curl -u $username:$password --silent "https:/mail.google.commailfeedatom"