通过shell直接对版本号自增,是CI中常见的问题,解决如下:

increment_version ()
{declare -a part=( ${1//\./ } )declare    newdeclare -i carry=1for (( CNTR=${#part[@]}-1; CNTR>=0; CNTR-=1 )); dolen=${#part[CNTR]}new=$((part[CNTR]+carry))[ ${#new} -gt $len ] && carry=1 || carry=0[ $CNTR -gt 0 ] && part[CNTR]=${new: -len} || part[CNTR]=${new}donenew="${part[*]}"echo -e "${new// /.}"
} version='1.2.3.9'increment_version $version

输出

1.2.4.0

如果只增加最后一位的话如下:

increment_version ()
{declare -a part=( ${1//\./ } )declare    newdeclare -i carry=1CNTR=${#part[@]}-1len=${#part[CNTR]}new=$((part[CNTR]+carry))part[CNTR]=${new}new="${part[*]}"echo -e "${new// /.}"
}
version='1.2.3.9'increment_version $version

结果

1.2.3.10

linux shell 实现自增版本号相关推荐

  1. Linux + Shell bash / sh / ksh / csh / tcsh

    Redhat Gnome Terminal 快捷键 http://huangchao200701.javaeye.com/blog/263002 常用 win+n切换背景颜色风格 alt+tab=不用 ...

  2. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  3. Linux Shell Tips小技巧

    文章目录 sed 指定行 删除文本 替换文本 小技巧 查找N天内修改文件 Shell写R语言 makefile写shell bad interpreter错误 替换换行符为空格 压缩并打包目录 重定向 ...

  4. shell处理mysql增、删、改、查

    shell处理mysql增.删.改.查 引言 这几天做一个任务,比对两个数据表中的数据,昨天用PHP写了一个版本,但考虑到有的机器没有php或者php没有编译mysql扩展,就无法使用mysql系列的 ...

  5. Linux Shell高级技巧(一)

    一.将输入信息转换为大写字符后再进行条件判断: 我们在读取用户的正常输入后,很有可能会将这些输入信息用于条件判断,那么在进行比较时,我们将不得不考虑这些信息的大小写匹配问题.       /> ...

  6. linux —— shell 编程(文本处理)

    导读 本文为博文 linux -- shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed a ...

  7. Linux Shell高级技巧(五)

    二十五.通过FTP下载指定的文件: 相比于手工调用FTP命令下载文件,该脚本提供了更为方便的操作方式.       /> cat > test25.sh       #!/bin/sh   ...

  8. Linux shell的简单学习

    Linux shell的简单学习 shell script 其实就是纯文本档,我们可以编辑这个档案,然后讥这个档案来帮我们一次执行多个指令, 戒者是刟用一些运算不逡辑刞断来帮我们达成某些功能. Lin ...

  9. 《Linux Shell编程从初学到精通(第2版)》pdf

    下载地址:网盘下载 内容简介 编辑 shell是用户与内核进行交互操作的一种接口,是linux最重要的软件之一.目前最流行的shell称为bash shell,bash shell脚本编程以其简洁.高 ...

最新文章

  1. python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!
  2. 十七UML核心视图动态视图之时序图
  3. [BZOJ3932][CQOI2015]任务查询系统(差分+主席树)
  4. 一次从节点同步出错的解决
  5. 数组(ArrayList)底层怎样扩容
  6. datatables 搜索框 placeholder 属性
  7. 前端笔记-echarts加载bmap地图
  8. 程序员怎样上元宇宙的车?
  9. Spark连接hive
  10. RN性能优化以及事件监听
  11. 人脸识别打卡机怎么调sj_人脸识别考勤机怎么代打卡
  12. 干货 | 100亿+数据量,每天50W+查询,携程酒店数据智能平台实践
  13. 实验二 Linux下Vi编辑器的使用
  14. 海康设备接入EasyCVR,出现告警信息缺失且不同步该如何解决?
  15. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!Sprint冲刺/冲刺计划会/每日站立会/冲刺评审会/冲刺回顾会,系列文章建议收藏
  16. 举例说明——xiaopiu切换状态使用技巧
  17. 电脑设备管理器在哪里可以找到
  18. “抢先式多任务”“协同式多任务”
  19. 深度优先搜索Or深度优先遍历详解
  20. ArcGIS for AutoCAD 下载安装使用

热门文章

  1. 计算机组成原理 — 数字集成电路(芯片)
  2. Kong APIGW — v.s. Apache APISIX
  3. [推荐]国外的Windows Mobile资源站点
  4. node.js之path模块的使用
  5. windows charles response 乱码解决办法
  6. 30分钟 带你浅入requirejs源码
  7. (水题)987654321 problem -- SGU 107
  8. 数组方法关于任意数字类型的数组求最大值解决办法
  9. android 源码下载编译
  10. 如何将视频网站中的视频插入到博客中