[英]How to append a string to each element of a Bash array?
我在Bash中有一个数组,每个元素都是一个字符串。 如何将另一个字符串附加到每个元素? 在Java中,代码类似于:
for (int i=0; i<array.length; i++)
{
array[i].append("content");
}
您甚至可以在每个循环项中附加一个字符串,而无需在Bash中循环!
# cf. http://codesnippets.joyent.com/posts/show/1826
array=(a b c d e)
array=( "${array[@]/%/_content}" )
printf '%s\n' "${array[@]}"
正如hal所提到的
array=( "${array[@]/%/_content}" )
会将'_content'字符串附加到每个元素。
array=( "${array[@]/#/prefix_}" )
将在每个元素之前添加“ prefix_”字符串
经过测试,它的工作原理是:
array=(a b c d e)
cnt=${#array[@]}
for ((i=0;i<cnt;i++)); do
array[i]="${array[i]}$i"
echo "${array[i]}"
done
产生:
a0
b1
c2
d3
e4
编辑: array
声明可以缩短为
array=({a..e})
为了帮助您了解bash中的数组及其语法,该参考是一个好的开始。 我也建议您对bash-hackers进行解释。
您传入数组的长度作为分配的索引。 长度是从1开始的,数组是从0开始的索引,因此通过传递长度,您可以告诉bash将值分配给数组中最后一个之后的插槽。 要获取数组的长度,请使用此${array[@]}
语法。
declare -a array
array[${#array[@]}]=1
array[${#array[@]}]=2
array[${#array[@]}]=3
array[${#array[@]}]=4
array[${#array[@]}]=5
echo ${array[@]}
产生
1 2 3 4 5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.