从BASH中的换行分隔列表获取最新版本

从BASH中的换行分隔列表获取最新版本,bash,Bash,我正在运行一个小curl命令从网页中检索以下信息。 我想从这个输出中收到任何损坏文件的“最新版本” 问题是。需要记住的是,有RC编号,这也是 alread在一个循环(下面的代码)中读取,并且输出可能并不总是有序的 输入 预期产量 facter-2.3.0.dmg 当前正在处理它的循环 function get_latest() { local url="$1" local name="$2" for pkg in $(wget -q "${url}" -O - |grep -o

我正在运行一个小curl命令从网页中检索以下信息。 我想从这个输出中收到任何损坏文件的“最新版本” 问题是。需要记住的是,有RC编号,这也是 alread在一个循环(下面的代码)中读取,并且输出可能并不总是有序的

输入

预期产量

facter-2.3.0.dmg
当前正在处理它的循环

function get_latest()
{
  local url="$1"
  local name="$2"

  for pkg in $(wget -q "${url}" -O - |grep -o ">${name}.*dmg" |cut -c 2-); do 
    echo "${url}/${pkg}"; 
  done
}

FACTER_URL="$(get_latest 'http://downloads.puppetlabs.com/mac/' 'facter')"
echo $FACTER_URL ##http://downloads.puppetlabs.com/mac/facter-2.3.0.dmg
另一种方法(我使用适当的XML/HTML解析器):

输出:

http://downloads.puppetlabs.com/mac/facter-2.3.0.dmg
注:


xmllint
debian
和衍生品提供了
libxml2 utils
,您可以在此处使用
sort-V

sort -rV file | head -1
facter-2.3.0.dmg
根据
人工分拣

  -V, --version-sort
          natural sort of (version) numbers within text
PS:这也将考虑
rc
版本

sort -rV file | head -1
facter-2.3.0.dmg
  -V, --version-sort
          natural sort of (version) numbers within text