我将命令行参数存储在数组变量中。(这对我来说是必要的)。我想用传递给变量的字符串作为所有数组值的前缀。
PREFIX="rajiv"
services=$( echo $* | tr -d '/' )
echo "${services[@]/#/$PREFIX-}"
我正在得到这个输出。
> ./script.sh webserver wistudio
rajiv-webserver wistudio
但是我期待着这个输出。
rajiv-webserver rajiv-wistudio
发布于 2018-03-04 14:01:01
您的数组初始化错误。将其更改为:
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
https://stackoverflow.com/questions/49092411
复制相似问题