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

问题描述 投票:2回答:1

我将命令行参数存储在数组变量中。 (这对我来说是必要的)。我想用一个传递变量的字符串为所有数组值加前缀。

PREFIX="rajiv"

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

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

我得到了这个输出。

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

但我期待这个输出。

rajiv-webserver rajiv-wistudio
arrays linux bash shell
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.