向空格分隔字符串中的所有元素添加前缀/后缀

Mav*_*bot 1 bash sh

假设您有一个 shell 变量foo,其值为

echo ${foo}
# Output: elementA elementB elementC
Run Code Online (Sandbox Code Playgroud)

现在我想向元素添加相同的前缀__PREFIX__和后缀__SUFFIX__,以便

echo ${new_foo}
# Output: __PREFIX__ElementA__SUFFIX__  __PREFIX__ElementB__SUFFIX__  __PREFIX__ElementC__SUFFIX__ 
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最简单方法是什么?


因为我不确定应该如何调用这样的操作,所以标题可能没有正确描述问题。

感谢您的评论和回答。标题已更新。

che*_*ner 6

如果你有一个合适的数组,

foo=(a b c)
Run Code Online (Sandbox Code Playgroud)

您可以使用运算符添加前缀/#,并使用运算符添加后缀/%。不过,它确实必须分两步完成。

$ foo=(a b c)
$ foo=("${foo[@]/#/__PREFIX__}")
$ foo=("${foo[@]/%/__SUFFIX__}")
$ declare -p foo
declare -a foo=([0]="__PREFIX__a__SUFFIX__" [1]="__PREFIX__b__SUFFIX__" [2]="__PREFIX__c__SUFFIX__")
Run Code Online (Sandbox Code Playgroud)

如果您只有一个空格分隔的字符串,则可以使用//

$ foo="a b c"
$ foo="__PREFIX__${foo// /__SUFFIX__ __PREFIX__}__SUFFIX__"
$ echo "$foo"
__PREFIX__a__SUFFIX__ __PREFIX__b__SUFFIX__ __PREFIX__c__SUFFIX__
Run Code Online (Sandbox Code Playgroud)