基本上我需要创建一个传递参数的函数,我需要更新数字,例如参数是
version_2 并在函数之后将其更改为 version_3
只是增加一
在 java 中,我只会创建一个新字符串,然后将最后一个字符更新一个并附加,但不确定如何在 bash 中执行此操作。
updateVersion() {
version=$1
}
Run Code Online (Sandbox Code Playgroud)
前缀可以是任何东西,例如可以是 dog12 或 dog_12,并且总是有一个要更新的数字。
更新后分别是 dog13 或 dog_13。
updateVersion()
{
[[ $1 =~ ([^0-9]*)([0-9]+) ]] || { echo 'invalid input'; exit; }
echo "${BASH_REMATCH[1]}$(( ${BASH_REMATCH[2]} + 1 ))"
}
# Usage
updateVersion version_11 # output: version_12
updateVersion version11 # output: version12
updateVersion something_else123 # output: something_else124
updateVersion "with spaces 99" # output: with spaces 100
# Putting it in a variable
v2="$(updateVersion version2)"
echo "$v2" # output: version3
Run Code Online (Sandbox Code Playgroud)
使用参数扩展:
#! /bin/bash
shopt -s extglob
for version in version_1 version_19 version_34.14 ; do
echo $version
v=${version##*[^0-9]}
((++v))
echo ${version%%+([0-9])}$v
done
Run Code Online (Sandbox Code Playgroud)
extglob需要+([0-9])表示“一个或多个数字”的结构。