如何将 html 类内容存储到 shell 变量中

如何将 html 类内容存储到 shell 变量中

我一直在尝试编写一个脚本,并且在这个脚本中我想使用变量来更新文件夹名称和其他一些东西。

我创建的文件夹将被称为 github 上的最新版本发布名称。

#!/bin/sh
content=$(curl -s -L https://github.com/FAForever/client/releases)
fl=tr '\n' ' ' < $content | grep -E "^<div class=\"release-title\">.*</div>$"
echo $fl



#!/bin/sh
s=$(curl -s https://github.com/FAForever/client/releases | grep "div class='release-title'")
echo "$s"

我已经在网上搜索过了,但没有人做过这个特定的设置(源 curl/输出 shell var)

所有这些都具有某种文件输入或输出或其他,我无法利用它们的解决方案。

在 shell 中,抓取一个类的内容并将其存储在 shell 变量中的正确语法是什么?

谢谢。

答案1

Github API https://api.github.com/ 返回 json,可以使用命令行工具 jq 进行处理

您需要什么?发布列表?... 试试这个

curl https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name

它会给你输出

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  107k  100  107k    0     0   314k      0 --:--:-- --:--:-- --:--:--  314k
"0.12.0-pre2"
"0.12.0-pre1"
"0.11.60-p1"
"0.11.61-pre2"
"0.11.61-pre"
"0.11.60"
"0.11.59-pre"
"0.11.58"
"0.11.57"
"0.11.55"
"0.11.54"
"0.11.53"
"0.11.52"
"0.11.51"
"0.11.50"
"0.11.49"
"0.11.47"
"0.11.16+291"
"0.11.14"
"0.11.8+270"
"0.11.7+267"
"0.11.3+247"
"0.11.0"
"0.10.125"
"0.10.124"
"0.10.123"
"0.10.124-pre"
"0.10.123-pre"
"0.11-pre-3"
"0.11-pre-2"

如果你说“只显示最新的”那么发出

sudo apt-get install jq

curl --silent  https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name|sort -n|tail -1

带输出

"0.12.0-pre2"

现在捆绑到 shell 脚本 vi show_latest.sh

#!/bin/bash

latest_release=$(curl --silent  https://api.github.com/repos/FAForever/client/releases | jq .[].tag_name|sort -n|tail -1)

echo latest_release $latest_release

生成输出

latest_release "0.12.0-pre2"

答案2

与Scott的答案相同,但使用Python。

curl https://api.github.com/repos/FAForever/client/releases | python -c 'import sys,json; print "\n".join(map(lambda x: x["tag_name"],json.load(sys.stdin)))'

相关内容