我将命令行参数存储在数组变量中。(这对我来说是必要的)。我想用传递给变量的字符串作为所有数组值的前缀。
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 stringhttps://stackoverflow.com/questions/49092411
复制相似问题