我将命令行参数存储在数组变量中。(这对我来说是必要的)。我想给所有数组值加上一个通过变量的字符串作为前缀。
PREFIX="rajiv"
services=$( echo $* | tr -d '/' )
echo "${services[@]/#/$PREFIX-}"
我得到这个输出。
> ./script.sh webserver wistudio
rajiv-webserver wistudio
但是我期望这个输出。
rajiv-webserver rajiv-wistudio
您的数组初始化错误。更改为此:
services=($(echo $* | tr -d '/'))
如果没有external ()
,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句