Cri*_*uck 12 linux sysadmin bash centos devops
我是一个非常新的 BASH 脚本,我正在尝试创建自己的脚本以从源下载/构建一个包。但是,我想在我的脚本中添加一些交互,以使其将来为更新版本做好准备。
我的脚本询问用户他们想要安装的版本并生成 wget 命令和下载链接。请参阅下面的摘录:
# Ask user for required version
read packversion
# Download version from internet (depending on version provided above)
wget https://example.com/download/1.10/src/$packversion.tar.gz -O package.tar.gz
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是如果您查看它包含1.10的网址,我只想从提供的字符串中提取主要/次要版本并预先填充它。
有没有我可以使用的功能来实现这一点?
提前致谢。
小智 13
在 bash 中,我能够做到这一点:
» export packversion=1.10.2
» export shortversion=${packversion%.*}
» printenv shortversion
1.10
Run Code Online (Sandbox Code Playgroud)
来自Arnold Robbins 的Bash Pocket Reference(O'Reilly,2016 年,第 2 版):
${ var % pattern }从左边删除文本匹配模式后使用var 的值。删除最短的匹配部分。
这里,{.*} 是要删除的模式,对应补丁版本号。
通过执行以下操作,我设法实现了我所追求的目标:
shortversion="$(cut -d '.' -f 1 <<< "$packversion")"."$(cut -d '.' -f 2 <<< "$packversion")"
Run Code Online (Sandbox Code Playgroud)
然后创建一个新变量,我可以用它来创建 url。
wget https://example.com/download/$shortversion/src/package-$packversion.tar.gz
Run Code Online (Sandbox Code Playgroud)
虽然不确定它是否是最好的方法,但对我有用。
归档时间: |
|
查看次数: |
4312 次 |
最近记录: |