Bash变量替换

Max*_*amy 2 bash

我有一个包含由空格分隔的四个数字的变量,例如:

a="12.3 423.4 11.0033 14.02"
Run Code Online (Sandbox Code Playgroud)

但有时,我有一个尾随的空格:

a="12.3 423.4 11.0033 14.02 "
Run Code Online (Sandbox Code Playgroud)

我想用"&"替换空格,为此,我做:

echo ${a// / & }
Run Code Online (Sandbox Code Playgroud)

这给了我:

12.3 & 423.4 & 11.0033 & 14.02
Run Code Online (Sandbox Code Playgroud)

或者如果我有一个尾随空格:

12.3 & 423.4 & 11.0033 & 14.02 & 
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道我的字符串末尾是否有空格而且我不想要任何额外的"&".什么是最优雅的方式来避免这个额外的角色?有没有办法说"如果一个空格和下一个字符替换一个数字"?

编辑:我知道我可以使用sed,但由于bash中有一个变量替换机制,我想知道如何使用它来做我想要的.我不知道如何在bash替换中写出"not end of line"或"is a digit".

dan*_*dam 7

如果有以下内容,这将删除尾随空格:

a=${a% }
Run Code Online (Sandbox Code Playgroud)

然后你可以做你的替换:

a=${a// / & }
Run Code Online (Sandbox Code Playgroud)