[英]Adding a prefix to all array elements in Bash
我将命令行参数存储在数组变量中。 (这对我来说是必要的)。 我想用一个通过变量的字符串作为所有数组值的前缀。
PREFIX="rajiv"
services=$( echo $* | tr -d '/' )
echo "${services[@]/#/$PREFIX-}"
我得到这个输出。
> ./script.sh webserver wistudio
rajiv-webserver wistudio
但我期待这个输出。
rajiv-webserver rajiv-wistudio
你的数组初始化是错误的。 改成这样:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.