bash从字符串末尾替换一个字符

ren*_*ton 1 string bash shell replace

我需要将最后一个点替换为字符串中的字符' - '.

# a='2.5.2.pl'
Run Code Online (Sandbox Code Playgroud)

使用以下表达式:

# echo ${a/%./-}
Run Code Online (Sandbox Code Playgroud)

我希望得到:

2.5.2-pl
Run Code Online (Sandbox Code Playgroud)

但我明白了

2.5.2.pl
Run Code Online (Sandbox Code Playgroud)

我注意到只有当我需要从头到尾替换点时它才起作用.为什么会这样?当然我可以使用像awk这样的外部程序来解决这个问题,但是我只需要使用bash解决问题.

谢谢你的建议!

Cyr*_*rus 5

使用bash的参数扩展:

a='2.5.2.pl'
echo "${a%.*}-${a##*.}"
Run Code Online (Sandbox Code Playgroud)

输出:

2.5.2-pl