在Bash中为所有数组元素添加前缀

时间:2018-03-04 05:47:33

标签: arrays linux bash shell

我将命令行参数存储在数组变量中。 (这对我来说是必要的)。 我希望使用通过变量的字符串为所有数组值添加前缀。

PREFIX="rajiv"

services=$( echo $* | tr -d '/' )

echo  "${services[@]/#/$PREFIX-}"

我收到了这个输出。

> ./script.sh webserver wistudio
rajiv-webserver wistudio

但我期待这个输出。

rajiv-webserver rajiv-wistudio

1 个答案:

答案 0 :(得分:2)

您的阵列初始化错误。将其更改为:

services=($(echo $* | tr -d '/'))

如果没有外部()services将成为字符串,参数展开"${services[@]/#/$PREFIX-}"会将$PREFIX-添加到您的字符串中。

在这种情况下,declare -p可用于检查变量的内容。在这种情况下,declare -p services应该显示:

declare -a services=([0]="webserver" [1]="wistudio") # it is an array!

而不是

declare -- services="webserver wistudio"             # it is a plain string