繁体   English   中英

Shell脚本中字符串中的增量变量

[英]increment variable in a string in shell script

我有一个来自变量的字符串,我想增加它。 我该如何使用shell脚本呢?

这是我的输入,来自一个变量:

abc-ananya-01

输出应为:

abc-ananya-02

它更短:

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

检查一下:

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

上面的代码会增加并保持您的数字格式。

使用纯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

Bash字符串操作可在此处使用。

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM