在shell脚本中增加字符串中的变量

时间:2016-04-29 08:45:19

标签: bash sh

我有一个来自变量的字符串 我想增加它。我怎么能用shell脚本呢?

这是我输入的变量:

abc-ananya-01
输出应该是:

abc-ananya-02

4 个答案:

答案 0 :(得分:3)

它更短:

a=abc-lhg-08
echo ${a%-*}-`printf "%02d" $((10#${a##*-}+1))`
abc-lhg-09

更好:

a=abc-lhg-08
printf "%s-%02d\n" ${a%-*} $((10#${a##*-}+1))
abc-lhg-09

答案 1 :(得分:1)

检查一下:

kent$  echo "abc-ananya-07"|awk -F'-' -v OFS='-' '{$3=sprintf("%02d",++$3)}7' 
abc-ananya-08

以上代码会增加并保留您的数字格式。

答案 2 :(得分:1)

使用纯Bash它有点长:

IFS="-" read -r -a arr <<< "abc-ananya-01"
last=10#${arr[${#arr}-1]}    # to prevent getting 08, when Bash 
                             # understands it is a number in base 8
last=$(( last + 1 ))
arr[${#arr}-1]=$(printf "%02d" $last)
( IFS="-"; echo "${arr[*]}" )

这将读入一个数组,递增最后一个元素并将其打印回来。

它返回:

abc-ananya-02

答案 3 :(得分:1)

这里可以使用Bash字符串操作。

a='abc-ananya-07'
let last=$(echo ${a##*-}+1)
echo ${a%-*}-$(printf "%02d" $last)

enter image description here