尝试从GitHub下载最新的SBT版本:
version="$(curl -vsLk https://github.com/sbt/sbt/releases/latest 2>&1 | grep "< Location" | rev | cut -d'/' -f1 | rev)"
version
设置为v1.1.0-RC2
然后尝试下载.tar.gz包:
curl -fsSLk "https://github.com/sbt/sbt/archive/${version}.tar.gz" | tar xvfz - -C /home/myuser
但是,而不是正确的网址:
https://github.com/sbt/sbt/archive/v1.1.0-RC2.tar.gz
不知何故,版本字符串被解释为命令(?!),结果是:
.tar.gzttps://github.com/sbt/sbt/archive/v1.1.0-RC2
当我手动设置version="v1.1.0-RC2"
时,这不会发生。
提前致谢!
答案 0 :(得分:1)
您应该在-I
命令中使用curl
标记,并使用更简单的管道来获取如下版本号:
curl -sILk https://github.com/sbt/sbt/releases/latest |
awk -F '[/ ]+' '$1 == "Location:"{sub(/\r$/, ""); print $NF}'
v1.1.0-RC2
另请注意,使用sub
功能可以从\r
输出的行尾删除curl
。
您的脚本:
version=$(curl -sILk https://github.com/sbt/sbt/releases/latest | awk -F '[/ ]+' '$1 == "Location:"{sub(/\r$/, ""); print $NF}')
curl -fsSLk "https://github.com/sbt/sbt/archive/${version}.tar.gz" | tar xvfz - -C /home/myuser