自动下载最新版本的 Slack
Download latest version of Slack automatically
我有一个使用 wget 命令下载 slack 的脚本,因为每次配置计算机时都会运行该脚本,所以我需要始终下载最新版本的 slack。
我在 debian9 工作
我现在正在做:
wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.3.7-amd64.deb
我试过这个:
curl -s https://slack.com/intl/es/release-notes/linux | grep "<h2>Slack" | head -1 | sed 's/[<h2>/]//g' | sed 's/[a-z A-Z]//g' | sed "s/ //g"
这个return:3.3.7
将此添加到:wget https://downloads.slack-edge.com/linux_releases/slack-desktop-$curl-amd64.deb
并且不工作。
你知道为什么这行不通吗?
您的脚本生成了一个带有大量前导空格的长字符串。
bash$ curl -s https://slack.com/intl/es/release-notes/linux |
> grep "<h2>Slack" | head -1 |
> sed 's/[<h2>/]//g' | sed 's/[a-z A-Z]//g' | sed "s/ //g"
3.3.7
你想要没有空格的字符串,并且可以显着简化冗长的管道。
barh$ curl -s https://slack.com/intl/es/release-notes/linux |
> sed -n "/^.*<h2>Slack /{;s///;s/[^0-9.].*//p;q;}"
3.3.7
还要注意字符 class [<h2>/]
根本不是你想的那样。无论上下文如何,它都匹配 <
或 h
或 2
或 >
或 /
的单个字符。因此,例如,如果当前版本号包含数字 2,您也可以删除它。
不过,这样的刮擦非常脆弱。我注意到,如果我将 URL 中的 /es/
更改为 /en/
,我根本不会得到任何输出。也许您可以找到获得最新版本的更好方法(使用 apt
应该允许您安装最新版本,而无需您编写任何脚本)。
echo wget "https://downloads.slack-edge.com/linux_releases/slack-desktop-$(curl -s "https://slack.com/intl/es/release-notes/linux" | xmllint --html --xpath '//h2' - 2>/dev/null | head -n1 | sed 's/<h2>//;s#</h2>##;s/Slack //')-amd64.deb"
将输出:
wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.3.7-amd64.deb
我使用 xmllint 解析 html 并提取 <h2>
标记之间的第一部分。然后使用 sed
进行一些删除,我收到了最新版本。
@编辑:
注意到,您可以从站点 grep <h2>
获取版本,您可以使用以下版本:
curl -s "https://slack.com/intl/es/release-notes/linux" | grep -m1 "<h2>" | cut -d' ' -f2 | cut -d'<' -f1
我有一个使用 wget 命令下载 slack 的脚本,因为每次配置计算机时都会运行该脚本,所以我需要始终下载最新版本的 slack。
我在 debian9 工作
我现在正在做:
wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.3.7-amd64.deb
我试过这个:
curl -s https://slack.com/intl/es/release-notes/linux | grep "<h2>Slack" | head -1 | sed 's/[<h2>/]//g' | sed 's/[a-z A-Z]//g' | sed "s/ //g"
这个return:3.3.7
将此添加到:wget https://downloads.slack-edge.com/linux_releases/slack-desktop-$curl-amd64.deb
并且不工作。
你知道为什么这行不通吗?
您的脚本生成了一个带有大量前导空格的长字符串。
bash$ curl -s https://slack.com/intl/es/release-notes/linux |
> grep "<h2>Slack" | head -1 |
> sed 's/[<h2>/]//g' | sed 's/[a-z A-Z]//g' | sed "s/ //g"
3.3.7
你想要没有空格的字符串,并且可以显着简化冗长的管道。
barh$ curl -s https://slack.com/intl/es/release-notes/linux |
> sed -n "/^.*<h2>Slack /{;s///;s/[^0-9.].*//p;q;}"
3.3.7
还要注意字符 class [<h2>/]
根本不是你想的那样。无论上下文如何,它都匹配 <
或 h
或 2
或 >
或 /
的单个字符。因此,例如,如果当前版本号包含数字 2,您也可以删除它。
不过,这样的刮擦非常脆弱。我注意到,如果我将 URL 中的 /es/
更改为 /en/
,我根本不会得到任何输出。也许您可以找到获得最新版本的更好方法(使用 apt
应该允许您安装最新版本,而无需您编写任何脚本)。
echo wget "https://downloads.slack-edge.com/linux_releases/slack-desktop-$(curl -s "https://slack.com/intl/es/release-notes/linux" | xmllint --html --xpath '//h2' - 2>/dev/null | head -n1 | sed 's/<h2>//;s#</h2>##;s/Slack //')-amd64.deb"
将输出:
wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.3.7-amd64.deb
我使用 xmllint 解析 html 并提取 <h2>
标记之间的第一部分。然后使用 sed
进行一些删除,我收到了最新版本。
@编辑:
注意到,您可以从站点 grep <h2>
获取版本,您可以使用以下版本:
curl -s "https://slack.com/intl/es/release-notes/linux" | grep -m1 "<h2>" | cut -d' ' -f2 | cut -d'<' -f1