自动下载最新版本的 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>/] 根本不是你想的那样。无论上下文如何,它都匹配 <h2>/ 的单个字符。因此,例如,如果当前版本号包含数字 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