如何在Bash中将字符串test_1.0的小数部分递增至test_1.1
解决Bash脚本中浮点数版本号递增问题
你的代码出错原因有两个:
$((...))是Bash的整数算术扩展,只能处理整数运算,没法处理带小数点的浮点数,而且语法不允许在里面嵌套管道命令- 直接对整个字符串
test_1.0做加法操作,Bash无法识别其中的非数字部分
下面是正确的实现步骤,能实现每次运行脚本时把版本号的小数部分加1:
counter=1 k="test_1.0" # 1. 从字符串中提取版本号部分(去掉前缀test_) version=${k#*_} # 2. 用bc计算新的版本号(浮点数加法) new_version=$(echo "$version + $counter" | bc) # 3. 把前缀和新版本号拼接回去 k="${k%_*}_$new_version" # 打印结果 echo $k
运行这段代码后,输出会是test_2.0,下次运行(如果保留counter或者从文件读取上次版本的话)会变成test_3.0,以此类推。如果需要处理更复杂的版本号(比如test_1.23),这段代码同样有效,加1后会得到test_2.23。
内容的提问来源于stack exchange,提问作者Rafa S
相关产品推荐
相关产品推荐

