0

files=("Benjamin Johnson" "Bastin Johnson" "Bagio Johnson")

( IFS=','; echo "${files[*]/#/Mr.}"; echo "${files[*]/ /_}" )

预期结果 Mr.Benjamin_Johnson,Mr.Bastin_Johnson,Mr.Bagio_Johnson

输出结果:

Mr.Benjamin Johnson,Mr.Bagio Johnson,Mr.Bastin Johnson

Benjamin_Johnson,Bagio_Johnson,Bastin_Johnson

4

2 回答 2

1

或使用printf

$ printf "Mr.%s,Mr.%s,Mr.%s" ${files[@]/ /_}
Mr.Benjamin_Johnson,Mr.Bastin_Johnson,Mr.Bagio_Johnson

或者只有一个%s

$ printf "Mr.%s," ${files[@]/ /_}
Mr.Benjamin_Johnson,Mr.Bastin_Johnson,Mr.Bagio_Johnson,

但这会添加最后一个逗号,可以像这样删除

$ printf -v test "Mr.%s," ${files[@]/ /_}; echo ${test%,}
Mr.Benjamin_Johnson,Mr.Bastin_Johnson,Mr.Bagio_Johnson
于 2020-02-29T18:38:34.640 回答
0

只需使用中间数组。

( IFS=','; files=("${files[@]/#/Mr.}"); echo "${files[*]/ /_}" )
于 2020-02-29T18:03:56.963 回答