使用Bash进行减法



我正在尝试使用bash从十进制数中减去。

例如:如果我有一个数字1.0.0.55,我想减去得到1.0.0.54。

以下是我目前的记录:

#!/bin/bash
LATEST_RELEASE="myproduct_1.0.0.55"
RELEASE_NUMBER=`echo $LATEST_RELEASE | sed 's/[^0-9.]//g'`
echo $RELEASE_NUMBER
#this only works with whole numbers (i.e. 10055)
PREVIOUS_RELEASE=$(($RELEASE_NUMBER - 1))
echo $PREVIOUS_RELEASE
#EOF

任何帮助将不胜感激!

谢谢!

bash及其参数展开:

latest_release="myproduct_1.0.0.55"
first="${latest_release%.*}"
declare -i last                     # set integer flag
last="${latest_release##*.}"-1
previous_release="$first.$last"
echo "$previous_release"

输出:

<>以前myproduct_1.0.0.54

您需要隔离想要从中提取1的字符串部分,因为您不能从字符串1.0.0.55中减去1

考虑在这里使用awk:

echo '1.0.0.55' | awk 'BEGIN{FS=OFS="."}{$4=$4-1}1'

"myproduct_1.0.0.54"不是一个数字,所以我们不能轻易地把它减去1。


我将使用参数扩展(${parameter:-word})来获得最后一个.之后的部分,并在数字上使用它,以便我们可以+ 1

然后获取最后一个点之前的所有内容以再次连接字符串:

#!/bin/bash
input="myproduct_1.0.0.55"
minus=$((${input##*.} - 1))
echo "${input%.*}.${minus}"

会产生:

myproduct_1.0.0.54

上网试试!

相关内容

  • 没有找到相关文章